【PHP8.x】getInnerIteratorメソッドの使い方

getInnerIteratorメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

getInnerIteratorメソッドは、RegexIteratorが内部で保持している、フィルタリング対象の元のイテレータを取得するメソッドです。RegexIteratorクラスは、既存のイテレータ(配列のように順番にデータを取り出せるオブジェクト)に対して、正規表現によるフィルタリング機能を追加するためのものです。このクラスは、コンストラクタで渡された元のイテレータを内部に包み込むようにして、正規表現に一致する要素だけを返す新しいイテレータとして振る舞います。getInnerIteratorメソッドを使用すると、このフィルタリングが適用される前の、包み込まれた状態の元のイテレータオブジェクトそのものにアクセスできます。これにより、正規表現で絞り込んだ結果を処理した後に、何らかの理由でフィルタリング前の全データにアクセスしたい場合や、元のイテレータが持つ別の情報を参照したい場合に便利です。例えば、特定のファイル名パターンに一致する要素を処理した後、元の全ファイルリストの総数を調べるといった用途で利用できます。このメソッドは引数を取らず、内部イテレータを返します。

構文(syntax)

1<?php
2
3// 元となるイテレータ(ArrayIterator)を作成します
4$arrayIterator = new ArrayIterator(['apple', 'banana', 'avocado']);
5
6// ArrayIteratorを内包するRegexIteratorを作成します
7$regexIterator = new RegexIterator($arrayIterator, '/^a/');
8
9// getInnerIterator() を呼び出して、内包されている元のイテレータを取得します
10$innerIterator = $regexIterator->getInnerIterator();
11
12// 取得したイテレータは、最初に作成したArrayIteratorと同一です
13var_dump($innerIterator === $arrayIterator); // bool(true)
14
15?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

?Iterator

RegexIterator::getInnerIterator は、このイテレータが内部で使用している元のイテレータを返します。この戻り値は null である可能性もあります。

【PHP8.x】getInnerIteratorメソッドの使い方 | いっしー@Webエンジニア