我有一个像这样的目录结构
- 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...
}
}
答案 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
)
)