PHP を使用した再帰的なファイルとフォルダーの検索
ディレクトリの内容とすべてのサブディレクトリを走査するには、再帰関数が使用されます。ただし、提供されたコードにはパフォーマンスの問題があり、ブラウザの速度が大幅に低下します。
問題
関数は「.」を除外しません。再帰呼び出しにより、".." ディレクトリが削除され、無限ループと実行速度の低下につながります。
修正
この問題に対処するために、コードを次のように変更しました。
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; }
「.」の除外と「..」
「.」を除外する条件を追加しました。再帰呼び出しからの「..」ディレクトリ。これらのディレクトリはそれぞれ現在のディレクトリと親ディレクトリを表し、これらを含めると無限ループが作成されます。
使用法
関数を使用するには、単にディレクトリへのパスを指定します。トラバースしたいディレクトリ:
var_dump(getDirContents('/xampp/htdocs/WORK'));
このコードは、指定されたディレクトリ内のファイルとフォルダーの完全なリストを含む配列を返します。ディレクトリ。各エントリはファイルまたはフォルダーへのフルパスになります。
以上がパフォーマンスの問題を発生させずに PHP でファイルとフォルダーを再帰的に検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。