ホームページ バックエンド開発 PHPチュートリアル PHP5 の DirectoryIterators_PHP チュートリアルを使用してディレクトリを再帰的にスキャンする

PHP5 の DirectoryIterators_PHP チュートリアルを使用してディレクトリを再帰的にスキャンする

Jul 13, 2016 pm 05:36 PM
iterator php5 走査 使用 目次 再帰

Iterator が PHP5 に追加されました。これは、階層データ構造の移動と処理に役立つ既製のインターフェイスのセットです。これは、PHP5 の最も興味深い新機能の 1 つです。

これらのイテレーターにより、XML ドキュメント ツリーまたはファイルのコレクションの処理に必要なコードが大幅に削減されます。 PHP5 では、ArrayIterator、CachingIterator、LimitIterator、RecursiveIterator、SimpleXMLIterator、DirectoryIterator など、多数のイテレータが使用されます。

DirectoryIterator を使用すると、ディレクトリ内のファイルを迅速かつ効率的に処理できます。コーディング プロセスにもう少し創造性を加えると、DirectoryIterator を使用して、ネストされたディレクトリ ツリーを再帰的に処理することもできます。どちらのタスクも、わずか数行のコードを使用して実行でき、「標準」アプローチに比べて大幅に改善されています。

単一レベルのディレクトリの処理
まず、単一レベルのディレクトリを処理するという単純なタスクから始めます。次のコード (リスト A) を入力 (またはコピー) し、ローカル構成を反映するようにディレクトリ パスを変更します。

リストA

isDot()) {echo $file . "n";} }?>このコードの出力をブラウザで表示すると、指定したディレクトリ内のファイルのリストが表示されます。どうしてそうなった? DirectoryIterator は、ディレクトリの内容を再記述するための所定のインターフェイスを提供します。ターゲット ディレクトリの場所がサンプリングされると、各要素がディレクトリ内のファイルを表す標準的な PHP 配列として扱うことができます。 isDot () メソッドを使用して「.」ディレクトリと「..」ディレクトリをそれぞれ除外することに注意してください。

ネストされたディレクトリ ツリーの処理

ネストされたディレクトリ ツリーを再帰的に処理することも、ほぼ同じくらい簡単です。この場合、DirectoryIterator は、単一レベルのディレクトリ内で見つかったすべてのオブジェクトをチェックして、それがファイルであるかディレクトリであるかを判断する必要があります。ディレクトリの場合は、さらに深く進んで次のレベルの内容を確認します。これは非常に複雑に聞こえるかもしれませんが、以前は通常 15 行を超えるコードが必要でした。

ただし、PHP5 では、上記の機能をすべて組み合わせた RecursiveIterator と RecursiveIteratorIterator という 2 つの新しいイテレーターのみが必要です。リスト B を参照:

リストB

このとき、入力結果は開始ディレクトリの下にあるすべてのファイルとディレクトリがリストされます。言うまでもなく、この再帰的な組み込みインターフェイスは、特定のディレクトリ レベルにあるすべてのファイルを処理する必要がある場合に非常に便利です。たとえば、ディレクトリ ツリーを再帰的に圧縮したり、一連のネストされたファイルのグループ/所有者権限を変更したりする場合です。

実際のアプリケーション: ディレクトリ ツリーの印刷

グラフィカルなディレクトリ ツリーの印刷は、ディレクトリ再帰の一般的なアプリケーションです。 Iterator クラスのドキュメントには、このアプリケーション専用に作成されたインスタンス クラスが含まれているため、Iterator を使用してこのタスクを処理するのは非常に簡単です。 DirectoryTreeIterator (Marcus Boerger のおかげ) は、前述した RecursiveIteratorIterator にその他の改良点を提供します。特に、ツリー構造内の深さと位置を表す ASCII タグが挙げられます。

リスト C は、DirectoryTreeIterator の使用法を示しています。

リストC

以下は表示される出力の一部です。 :

|-ch01| |-example02.php|これらの DirectoryIterators の値をよりよく理解するには、標準のファイル関数とディレクトリ関数を使用して、このチュートリアルで説明されている 3 つのアプリケーションをコーディングしてみてください。

http://www.bkjia.com/PHPjc/486632.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/486632.html技術記事 PHP5 には、階層データ構造の移動と処理に役立つ既製のインターフェイスのセットである Iterator が追加されています。これは、PHP5 の最も興味深い新機能の 1 つです。 これらのイテレータにより、XML ドキュメント ツリーの処理が大幅に削減されます...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

C++ 関数の再帰的実装: 再帰の深さに制限はありますか? C++ 関数の再帰的実装: 再帰の深さに制限はありますか? Apr 23, 2024 am 09:30 AM

C++ 関数の再帰の深さは制限されており、この制限を超えるとスタック オーバーフロー エラーが発生します。制限値はシステムやコンパイラによって異なりますが、通常は 1,000 ~ 10,000 の間です。解決策には次のものが含まれます: 1. 末尾再帰の最適化、2. 末尾呼び出し、3. 反復実装。

C++ ラムダ式は再帰をサポートしていますか? C++ ラムダ式は再帰をサポートしていますか? Apr 17, 2024 pm 09:06 PM

はい、C++ ラムダ式は std::function を使用して再帰をサポートできます。std::function を使用して Lambda 式への参照をキャプチャします。キャプチャされた参照を使用すると、ラムダ式はそれ自体を再帰的に呼び出すことができます。

C++ 関数の再帰的実装: 再帰的アルゴリズムと非再帰的アルゴリズムの比較分析? C++ 関数の再帰的実装: 再帰的アルゴリズムと非再帰的アルゴリズムの比較分析? Apr 22, 2024 pm 03:18 PM

再帰アルゴリズムは、関数の自己呼び出しを通じて構造化された問題を解決します。利点は、シンプルで理解しやすいことですが、欠点は、効率が低く、スタック オーバーフローを引き起こす可能性があることです。非再帰アルゴリズムは、明示的に管理することで再帰を回避します。スタック データ構造の利点は、より効率的でスタックのオーバーフローを回避できることですが、欠点はコードがより複雑になる可能性があることです。再帰的か非再帰的かの選択は、問題と実装の特定の制約によって異なります。

NetEase Cloud Music がローカル音楽をスキャンする方法_NetEase Cloud Music がローカル音楽をスキャンするチュートリアル NetEase Cloud Music がローカル音楽をスキャンする方法_NetEase Cloud Music がローカル音楽をスキャンするチュートリアル Mar 25, 2024 pm 10:21 PM

1. NetEase Cloud Music を開き、「My」をクリックして、「Local Music」をクリックします。 2. 右上隅にある 3 つの点をクリックします。 3. 「ローカル音楽をスキャン」をクリックします。 4. 下の「スキャン設定」をクリックします。 5. 左にスワイプして、60 秒未満のオーディオ ファイルをフィルタリングします。 6. 戻って [フル スキャン] をクリックして、ローカルの音楽をすべてスキャンします。

C++関数の再帰の詳しい解説:文字列処理における再帰の応用 C++関数の再帰の詳しい解説:文字列処理における再帰の応用 Apr 30, 2024 am 10:30 AM

再帰関数は、文字列処理の問題を解決するためにそれ自体を繰り返し呼び出す手法です。無限再帰を防ぐために終了条件が必要です。再帰は、文字列の反転や回文チェックなどの操作で広く使用されています。

Quark QRコードをスキャンする方法 Quark QRコードをスキャンする方法 Feb 27, 2024 pm 04:10 PM

Quarkソフトウェアには、ユーザーに便利さと楽しさをもたらすさまざまな機能があり、その中でも特に人気があるのがスキャン機能です。スキャン機能により、ユーザーは QR コードを簡単にスキャンすることができ、Web サイトへのログイン、友達の追加、アプリケーションのダウンロードなどをすべてワンクリックで行うことができます。では、Quark QRコードのスキャン機能の使い方について、まだ使い方が分からないというプレイヤーは必見ですので、このサイトの編集者による記事を読んで詳しく学んでください。 Quark QRコードをスキャンして答える方法: [Quark]-[3つの横アイコン]-[写真を撮ってスキャン]。具体的な手順: 1. まず Quark ソフトウェアを開き、ホームページに入ったら右下隅にある [3 つの横アイコン] をクリックします; 2. 次に、マイ ページをページの一番下まで上にスライドして、[写真スキャン] を見つけます]

WeChatで読む場合のカタログの見方 カタログの見方 WeChatで読む場合のカタログの見方 カタログの見方 Mar 30, 2024 pm 05:56 PM

WeChat Reading App のモバイル版は非常に優れた読書ソフトウェアです。このソフトウェアにはたくさんの書籍や作品が含まれています。ワンクリックでオンラインで検索して読むだけでいつでもどこでも読むことができます。すべて公式に認可されており、異なります。本の種類もきれいに並べられており、ゆっくりと本を読みながら快適に読書を楽しむことができます。さまざまなシナリオの読書モードを切り替え、書籍の最新章を毎日継続的に更新し、複数のデバイスからのオンライン ログインをサポートし、本棚への一括ダウンロードをサポートします。インターネットの有無にかかわらず読むことができるため、誰もがそこからより多くの知識を発見できます編集者がオンラインで詳細を説明 WeChat 読書パートナー向けにカタログの閲覧方法を宣伝します。 1. カタログを表示したい本を開き、本の中央をクリックします。 2. 左下隅にある三本線のアイコンをクリックします。 3. ポップアップ ウィンドウで書籍カタログを表示します。

C++ 再帰の上級: 末尾再帰の最適化とその応用について理解する C++ 再帰の上級: 末尾再帰の最適化とその応用について理解する Apr 30, 2024 am 10:45 AM

末尾再帰最適化 (TRO) は、特定の再帰呼び出しの効率を向上させます。末尾再帰呼び出しをジャンプ命令に変換し、コンテキスト状態をスタックではなくレジスターに保存することで、余分な呼び出しとスタックへの戻り操作を排除し、アルゴリズムの効率を向上させます。 TRO を使用すると、末尾再帰関数 (階乗計算など) を最適化できます。末尾再帰呼び出しを goto ステートメントに置き換えることで、コンパイラーは goto ジャンプを TRO に変換し、再帰アルゴリズムの実行を最適化します。

See all articles