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

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

作成日: 更新日:

基本的な使い方

『currentメソッドは、イテレータが現在指している要素を返す処理を実行するメソッドです。このメソッドはPHPの標準的なIteratorインターフェースで定義されていますが、RegexIteratorクラスにおいては、その挙動がコンストラクタで設定されたモードに依存するという重要な特徴があります。つまり、単に元のイテレータの現在の値を返すのではなく、正規表現のマッチング結果を加工した値を取得します。例えば、デフォルトのMATCHモードでは、正規表現にマッチした最初の部分文字列を含む配列を返します。ALL_MATCHESモードではマッチしたすべての結果を多次元配列で返し、SPLITモードではマッチ箇所で文字列を分割した配列を返します。さらにREPLACEモードでは、マッチした部分を指定の文字列で置換した結果を返します。このようにcurrentメソッドは、RegexIteratorで設定された正規表現の操作モードに応じて、フィルタリング後の多様な形式の結果を取得するために不可欠な役割を果たします。

構文(syntax)

1<?php
2
3$fruits = new ArrayIterator(['apple', 'banana', 'orange', 'apricot']);
4$regexIterator = new RegexIterator($fruits, '/^a/');
5
6// イテレータが有効な間、ループを続けます
7while ($regexIterator->valid()) {
8    // 現在のカーソル位置にある要素(正規表現にマッチした値)を取得します
9    // public current(): mixed
10    $currentValue = $regexIterator->current();
11
12    echo $currentValue . PHP_EOL;
13
14    // カーソルを次の要素に移動します
15    $regexIterator->next();
16}
17
18?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

string|array|null

現在のイテレーションにおける正規表現にマッチした文字列、またはマッチした部分の配列、あるいはマッチしなかった場合は null を返します。