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

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

作成日: 更新日:

基本的な使い方

『currentメソッドは、イテレータの現在の要素に対して正規表現を適用し、その結果を返すメソッドです』

このメソッドは、RecursiveRegexIteratorが反復処理を行う際に、現在指し示している要素を取得するために使用されます。しかし、単に元の値をそのまま返すわけではありません。RecursiveRegexIteratorのインスタンスを作成する際にコンストラクタで指定された動作モードと正規表現パターンに基づいて、現在の要素を処理した結果を返します。例えば、動作モードがRecursiveRegexIterator::GET_MATCHに設定されている場合、currentメソッドは元の値から正規表現に最初に一致した部分文字列を配列として返します。同様に、SPLITモードでは正規表現で文字列を分割した配列を、REPLACEモードでは一致箇所を置換した後の文字列を返します。このように、currentメソッドはforeachループなどでイテレータから値を取り出す際に、設定に応じた加工済みのデータを動的に提供する重要な役割を担っています。

構文(syntax)

1<?php
2
3$dataSource = new RecursiveArrayIterator([
4    'moduleA.php',
5    'config.xml',
6    'components' => [
7        'ComponentX.php',
8        'style.css',
9        'ComponentY.php'
10    ],
11    'README.md'
12]);
13
14$regexIterator = new RecursiveRegexIterator($dataSource, '/\.php$/');
15
16// RecursiveIteratorIterator を使って再帰的なイテレータをフラットに処理
17$iterator = new RecursiveIteratorIterator($regexIterator);
18
19// イテレータのポインタを先頭に戻す
20$iterator->rewind();
21
22// ポインタが有効な間、ループを続ける
23while ($iterator->valid()) {
24    // 現在の要素(マッチした値)を取得します
25    $currentValue = $iterator->current();
26
27    echo $currentValue . PHP_EOL;
28
29    // ポインタを次の要素に進める
30    $iterator->next();
31}

引数(parameters)

引数なし

引数はありません

戻り値(return)

string|array|null

RecursiveRegexIterator::current() メソッドは、現在位置にある要素の正規表現マッチ結果を文字列または配列で返します。マッチしなかった場合は null を返します。