再帰的な PHP 関数を利用したディレクトリ内のファイルとフォルダーの決定
この説明では、ディレクトリのファイルとサブディレクトリを再帰的に走査する方法について調査します。 🎜>
提供されるコード:function getDirContents($dir){ $results = array(); $files = scandir($dir); foreach($files as $key => $value){ if(!is_dir($dir. DIRECTORY_SEPARATOR .$value)){ $results[] = $value; } else if(is_dir($dir. DIRECTORY_SEPARATOR .$value)) { $results[] = $value; getDirContents($dir. DIRECTORY_SEPARATOR .$value); } } } print_r(getDirContents('/xampp/htdocs/WORK'));
ジレンマ:指定されたコードには、ディレクトリとファイルを探索するための再帰関数があります。ただし、「.」は無視できません。および「..」が含まれるため、無限ループが発生する可能性があります。さらに、各ファイルとディレクトリは結果で重複します。
答え:この問題に対処するには、次のように関数を変更できます:
function getDirContents($dir, &$results = array()) { $files = scandir($dir); foreach ($files as $key => $value) { $path = realpath($dir . DIRECTORY_SEPARATOR . $value); if (!is_dir($path)) { $results[] = $path; } else if ($value != "." && $value != "..") { getDirContents($path, $results); $results[] = $path; } } return $results; }
以上がPHP を使用して、無限ループやエントリの重複を避けて、ディレクトリ内のすべてのファイルとフォルダーを再帰的に一覧表示するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。