PHP チュートリアル: ディレクトリ内のファイルを再帰的に走査する必要はありません_PHP チュートリアル
特定のディレクトリ内のすべてのファイル (サブディレクトリを含む) を走査したい場合、最初に思い浮かぶのは再帰を使用することです。つまり、最初に現在のディレクトリを処理し、次に現在のディレクトリの下のサブディレクトリを処理します。再帰を使用しないことはできますか? 以前、データ構造を学習していたときに見たことがあります。再帰は実際にはスタックを使用して実装されます。その特徴は、最後の呼び出しが最初に実行され、最後から 2 番目の呼び出しが実行されることです。 is は 2 番目に実行され、以下同様に最初の呼び出しが最後に実行されます。再帰の原理を理解していれば、実際にすべての再帰的実装を非再帰的実装に変換できます。
非再帰的な方法でディレクトリ内のすべてのファイルをスキャンする このアイデアは、主に 3 つのステップに分かれています。
1. 配列を作成し、走査するディレクトリを配置します (実際にはスタックが作成されます)。2. この配列をループします。ループの終了条件は、配列が空であることです。
3. 各ループで、配列内の要素を処理し、要素がディレクトリの場合は、ディレクトリ内のすべてのサブ要素を配列に追加します。この考えに従って書かれたコードは次のとおりです:
クリップボードにコピー 引用コンテンツ: [www.bkjia.com] /*** ディレクトリ内のすべてのファイルをスキャンします
関数 scanAll($dir)
{
$list = array();
$list[] = $dir;
while (count($list) > 0)
{ //配列の最後の要素をポップします
$file = array_pop($list);
//現在のファイルを処理します
echo $file."rn"//ディレクトリの場合
if (is_dir( $file))
{
$children = scandir($file);
foreach ($children として $child)
{
if ($child !== '.' && $child !== '..')
{
$list[ ] = $file.'/'.$child
}
}
}
}
}
実際、多くの場合、再帰を使用した設計は非常に簡潔で読みやすいですが、再帰の深さが特に大きくない限り、影響はありません。
以下は比較のために再帰を使用した実装です:
クリップボードにコピー
引用コンテンツ:
[www.bkjia.com]
/*** ディレクトリ内のすべてのファイルを走査します (再帰的実装) * @param string $dir */ function scanAll2($dir)
if (is_dir($dir))
{
$children = scandir($dir); ($children を $child として)
{
if ($child !== '.' && $child !== '..')
{
scanAll2($dir.'/'.$child)
}
; }
}
}
// bkjia.com
実行後、2 つの関数の結果は、主に印刷順序において若干異なることがわかります。スタックにプッシュする順序は、scandir が出力される順序とまったく逆であるため、関数 1 の実行結果の順序は逆になります。
行 21 を変更できます。
クリップボードにコピー
引用コンテンツ:
[www.bkjia.com]
$children = array_reverse(scandir($file));
結果はまったく同じになります。 この記事の出典: http://blog.quanhz.com/archives/210
http://www.bkjia.com/PHPjc/363828.html

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、
