phpでディレクトリとそのサブディレクトリ内のすべてのファイル名を読み取る方法

ディレクトリとそのサブディレクトリ内のすべてのファイル名を取得する方法はいくつかありますが、一般的な方法として次の2つがあります:

  1. 再帰関数を使用してディレクトリとサブディレクトリを走査する:
function getFiles($dir) {
    $files = [];
    $handle = opendir($dir);
    
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
            $path = $dir.'/'.$file;
            
            if (is_dir($path)) {
                $files = array_merge($files, getFiles($path));
            } else {
                $files[] = $path;
            }
        }
    }
    
    closedir($handle);
    
    return $files;
}

$directory = "path/to/directory";
$files = getFiles($directory);

foreach ($files as $file) {
    echo $file."\n";
}
  1. RecursiveDirectoryIteratorクラスとRecursiveIteratorIteratorクラスを使用します。
$directory = "path/to/directory";
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory));

foreach ($iterator as $file) {
    if ($file->isDir()) {
        continue;
    }
    
    echo $file->getPathname()."\n";
}

具体の状況に応じて、適切な方法を選択して、ディレクトリとそのサブディレクトリ内のすべてのファイル名を取得することができます。

bannerAds