【问题标题】:Remove directory name from php array从 php 数组中删除目录名称
【发布时间】:2015-02-02 15:01:52
【问题描述】:

在 CodeIgnitor 中,我使用 directory_map 获取此数组。

Array
(
    [0] => preview.zip
    [1] => RealEsta - Email Marketing Template.zip
    [2] => thumbnail
    [3] => thumbnail.jpg
)

我想从数组中删除目录名。

Array
(
    [0] => preview.zip
    [1] => RealEsta - Email Marketing Template.zip
    [2] => thumbnail.jpg
)

像这样。我将如何从这个文件列表数组中删除这个目录。

【问题讨论】:

  • 你怎么知道索引2是一个目录?
  • 这将有助于首先了解您是如何创建数组的,因为 PHP 中的许多目录列表方法都具有排除 dirs 或仅限制文件的本地方法。
  • 根据文档,子目录本身就是数组,所以你可以通过is_array()过滤它们。 ellislab.com/codeigniter/user-guide/helpers/… 但这意味着数字索引元素是 not 目录,因此 thumbnail 实际上可能是没有扩展名的 file
  • $map = directory_map('./uploads/'.$user_id.'/files', TRUE, FALSE); print_r($map); 这是我的代码,它返回上面的数组我如何使用is_array

标签: php arrays codeigniter getfiles filelist


【解决方案1】:

根据 CodeIgniter 支持页面,目录名称不会作为数组值列出,而是作为数组索引列出。

https://ellislab.com/codeigniter/user-guide/helpers/directory_helper.html

【讨论】:

  • $map = directory_map('./uploads/'.$user_id.'/files', TRUE, FALSE); print_r($map); 这是我返回数组上方的代码。
【解决方案2】:

您可以使用is_dir()

示例:

<?php

// Your array
$files_and_dirs = array(
            'preview.zip',
            'RealEsta - Email Marketing Template.zip',
            'thumbnail',
            'thumbnail.jpg'
        );


// Now loop the above array
foreach($files_and_dirs as $key => $value)
{
    if(is_dir("abc/xyz/".$value))
    {
        unset($files_and_dirs[$key]);
    }
}

【讨论】:

    【解决方案3】:

    您可以通过多种方式解决它(目前我可以想到 3 种方式)。
    方式 1:

    $map = directory_map('./uploads/'.$user_id.'/files', 2, FALSE);//set second parameter as 2
    foreach($map as $key=>$m)
    {
        if(is_array($m))
        {
            unset($map[$key]);
        }
    }
    print_r($map);//now $map only contains files name
    

    方式 2:

    $map = directory_map('./uploads/'.$user_id.'/files', 2, FALSE);//set second parameter as 2
    foreach($map as $key=>$m)
    {
        if(!is_int($key))
        {
            unset($map[$key]);
        }
    }
    print_r($map);
    

    方式 3:

    $map = directory_map('./uploads/'.$user_id.'/files', 1, FALSE);//As you did
    foreach($map as $key=>$m)
    {
        if(is_dir('./uploads/'.$user_id.'/files'.$m))
        {
            unset($map[$key]);
        }
    }
    print_r($map);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-31
      • 2019-06-19
      • 1970-01-01
      • 1970-01-01
      • 2020-01-31
      • 1970-01-01
      相关资源
      最近更新 更多