PHP 関数は、データ コレクションを反復するために走査可能なオブジェクトを返すことができます。これらのオブジェクトには、次のような幅広い用途があります。 配列の反復 データベースの結果セットの処理 ディレクトリの走査 ジェネレータ関数を使用したイテレータの生成 コルーチンを使用した非同期プログラミング
PHP には、Traversable
インターフェイスを実装するトラバース可能なオブジェクトを返す関数が多数あります。これらの関数を使用すると、データのコレクションを配列や他のデータ型に変換せずに簡単に反復処理できます。以下は、PHP 関数によって返されるトラバース可能なオブジェクトの使用方法を示すいくつかの実践的なケースです:
$array = ['foo', 'bar', 'baz']; foreach ($array as $key => $value) { echo "$key => $value\n"; }
上記のコードは、foreach
ステートメントを使用して、配列を直接反復する場合、$array
は Traversable
インターフェイスを実装する走査可能なオブジェクトです。
次のコードは、PDO::query()
メソッドを使用して、Traversable を実装するデータベース結果セットを取得します。
インターフェイス:
$stmt = $pdo->query('SELECT * FROM users'); foreach ($stmt as $row) { echo "User: {$row['name']}\n"; }
DirectoryIterator クラスを使用して、ディレクトリ内のファイルを反復する走査可能なオブジェクトを生成します:
$dir = new DirectoryIterator(__DIR__); foreach ($dir as $file) { if ($file->isFile()) { echo "File: {$file->getFilename()}\n"; } }
function fibonacci() { $a = 0; $b = 1; while (true) { yield $a; $a = $b; $b = $a + $b; } } foreach (fibonacci() as $number) { echo "$number\n"; }
Co\Generator クラスを使用して作成できます。
use Co\Generator; $coroutine = new Generator(function () { yield 'Hello, world!'; }); foreach ($coroutine as $message) { echo $message . "\n"; }
Traversable インターフェイスを実装する反復可能なオブジェクトを生成します。これは次のように使用できます。他の Iterable は、トラバース可能なオブジェクトと同様です。
以上が走査可能なオブジェクトを返す PHP 関数のアプリケーションは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。