扫描目录并显示子目录及其内容

Posted

技术标签:

【中文标题】扫描目录并显示子目录及其内容【英文标题】:Scan Directory and display subdirectory and its contents 【发布时间】:2014-05-10 01:56:28 【问题描述】:

我有一个这样的目录结构

- images
-- images1/
--- image.jpg
-- images2/
--- image.jpg
-- images3/
--- image.jpg
-- images4/
--- image.jpg

假设目录中还有其他文件。

我想扫描每个目录,显示它以及每个目录中的特定内容,所以我想显示一个文件夹数组,只有 .jpg 和 .png 图像,而不是 .gif,因为例子。

我该怎么做?到目前为止我有..

public function getImages()

    $path = app_path() . '/images/';
    $list = scandir($path);
    while ($list) 
        # stuck here...
    

【问题讨论】:

【参考方案1】:

如果你想获取里面有子文件夹的文件,那么你可以使用RecursiveDirectoryIterator,然后将它与RecursiveIteratorIterator结合起来。 (我的天哪,这是什么名字)。考虑这个例子:

$path = 'images';
$current_folder = '';
$images = array();
$dir = new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::SKIP_DOTS);
$files = new RecursiveIteratorIterator($dir, RecursiveIteratorIterator::SELF_FIRST);
foreach($files as $key => $value) 
    if($value->isDir()) 
        $current_folder = $value->getFilename();
        $images[$current_folder] = array();
     else 
        if($value->getExtension() == 'jpg' || $value->getExtension() == 'png') 
            $images[$current_folder][] = $value->getFilename();
        
    


ksort($images);
print_r($images);

样本输出:

Array
(
    [images1] => Array
    (
        [0] => image.jpg
    )

    [images2] => Array
    (
        [0] => image.jpg
    )

    [images3] => Array
    (
        [0] => image.jpg
    )

    [images4] => Array
    (
        [0] => image.jpg
    )

)

【讨论】:

这里的两个括号有什么用..$images[$current_folder][]...只有$images[$current_folder]就够了?? @CodeLover 只是确保,如果一个文件夹中有 3 张图像,您不希望它们在每个循环中都覆盖该值。这就是为什么我将其分配并附加为数组 如果我添加 .$images[$current_folder] 而不是 $images[$current_folder][] 会起作用吗?? @CodeLover 它仍然可以工作,但正如我所说,它只会存储一个值,如果该文件夹有很多图像怎么办?如果文件夹images1 中有image.jpg, image.png, monalisa.png 怎么办?如果你这样做,你只会得到一个。 所以如果我们像 $images[$current_folder][] 这样调用它是调用多维数组的方式吗??

以上是关于扫描目录并显示子目录及其内容的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 cgi python 脚本在浏览器中显示 pdf 文件内容及其全名?

linux查看当前磁盘各目录容量命令

如何使用 NSFileManager 删除目录及其内容

Linux基础命令

检查目录及其内容是否已锁定的最佳方法是什么?

如何在 PHP 中递归删除目录及其全部内容(文件 + 子目录)? [复制]