如何从所有子目录中获取图像名称


How to get image names from all sub directories?

我使用以下php代码从相关目录获取所有图像名称。

$dir = "images";
$images = scandir($dir);
$listImages=array();
foreach($images as $image){
    $listImages=$image;
    echo ($listImages) ."<br>";
}

这个效果很好。但我想从相关目录中获得所有子目录下的所有图像文件名。父目录不包含图像,所有图像都包含在以下子文件夹中。

  • 父Dir
    • 子Dir
      • image1
      • image2
    • 子Dir2
      • image3
      • image4

我如何通过所有子文件夹并获得图像名称?

尝试以下操作。要获得完整的目录路径,请与父目录合并。

$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');