扫描目录并显示子目录及其内容
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][] 这样调用它是调用多维数组的方式吗??以上是关于扫描目录并显示子目录及其内容的主要内容,如果未能解决你的问题,请参考以下文章