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

时间:2014-05-10 01:56:29

标签: php

我有一个像这样的目录结构

- 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 个答案:

答案 0 :(得分:0)

如果您想获取包含子文件夹的文件,则可以使用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
    )

)