首页 文章

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

提问于
浏览
2

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

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

这一个很完美 . 但我想从相关目录中获取所有子目录中的所有图像文件名 . 父目录不包含图像,所有图像都包含在子文件夹中作为folows .

  • 家长Dir

  • Sub Dir

  • image1

  • image2

  • Sub Dir2

  • image3

  • image4

我如何浏览所有子文件夹并获取图像名称?

2 回答

  • 1

    试试以下 . 要获取完整目录路径,请与父目录合并 .

    $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>";
           }
       }
    }
    
  • 1

    利用递归,你可以很容易地做到这一点 . 此函数将无限期地遍历您的目录,直到每个目录完成搜索 . 这是没有测试过的 .

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

相关问题