特定のディレクトリ内のすべてのファイル (サブディレクトリを含む) を走査したい場合、最初に思い浮かぶのは再帰を使用することです。つまり、最初に現在のディレクトリを処理し、次に現在のディレクトリの下のサブディレクトリを処理します。再帰を使用しないことはできますか? 以前、データ構造を学習していたときに見たことがあります。再帰は実際にはスタックを使用して実装されます。その特徴は、最後の呼び出しが最初に実行され、最後から 2 番目の呼び出しが実行されることです。 is は 2 番目に実行され、以下同様に最初の呼び出しが最後に実行されます。再帰の原理を理解していれば、実際にすべての再帰的実装を非再帰的実装に変換できます。
非再帰的な方法でディレクトリ内のすべてのファイルをスキャンする このアイデアは、主に 3 つのステップに分かれています。
1. 配列を作成し、走査するディレクトリを配置します (実際にはスタックが作成されます)。2. この配列をループします。ループの終了条件は、配列が空であることです。
3. 各ループで、配列内の要素を処理し、要素がディレクトリの場合は、ディレクトリ内のすべてのサブ要素を配列に追加します。この考えに従って書かれたコードは次のとおりです:
クリップボードにコピー 引用コンテンツ: [www.bkjia.com] /*** ディレクトリ内のすべてのファイルをスキャンします * @param string $dir * bkjia.com から*/[www.bkjia.com]
/*** ディレクトリ内のすべてのファイルを走査します (再帰的実装) * @param string $dir */ function scanAll2($dir) { echo $dir."rn"$children = array_reverse(scandir($file));
結果はまったく同じになります。 この記事の出典: http://blog.quanhz.com/archives/210 http://www.bkjia.com/PHPjc/363828.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/363828.html