我使用以下php代码从相关目录获取所有图像名称。
$dir = "images";
$images = scandir($dir);
$listImages=array();
foreach($images as $image){
$listImages=$image;
echo ($listImages) ."<br>";
}
这个效果很好。但我想从相关目录中获得所有子目录下的所有图像文件名。父目录不包含图像,所有图像都包含在以下子文件夹中。
- 父Dir
- 子Dir
- image1
- image2
- 子Dir2
- image3
- image4
- 子Dir
我如何通过所有子文件夹并获得图像名称?
尝试以下操作。要获得完整的目录路径,请与父目录合并。
$path = 'images'; // '.' for current
foreach (new DirectoryIterator($path) as $file) {
if ($file->isDot()) continue;
if ($file->isDir()) {
$dir = $path.'/'. $file->getFilename();
$images = scandir($dir);
$listImages=array();
foreach($images as $image){
$listImages=$image;
echo ($listImages) ."<br>";
}
}
}
利用递归,您可以很容易地做到这一点。此函数将无限遍历目录,直到每个目录都完成搜索。
$images = [];
function getImages(&$images, $directory) {
$files = scandir($directory); // you should get rid of . and .. too
foreach($files as $file) {
if(is_dir($file) {
getImages($images, $directory . '/' . $file);
} else {
array_push($images, $file); /// you may also check if it is indeed an image
}
}
}
getImages($images, 'images');