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

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

作成日: 更新日:

基本的な使い方

『currentメソッドは、フィルタリングされたイテレータの現在位置にある有効な要素を取得する処理を実行するメソッドです。このメソッドは、RecursiveFilterIteratorクラスが実装するIteratorインターフェースの一部であり、イテレータの基本的な操作を担います。RecursiveFilterIteratorは、多次元配列やディレクトリ構造のような再帰的なデータ構造を走査しながら、特定の条件に基づいて要素をフィルタリングする際に利用されます。currentメソッドを呼び出すと、内部のイテレータが指す現在の要素が、acceptメソッドで定義されたフィルタリング条件を満たすかどうかが評価されます。条件を満たす場合、その要素の値が返されます。もし現在の要素が条件を満たさない場合は、イテレータは条件を満たす次の要素まで自動的に進み、その要素が返されます。foreach構文などでイテレータを反復処理する際には、各ループで現在の要素の値を取得するために、このcurrentメソッドが内部的に呼び出されています。

構文(syntax)

1<?php
2
3// RecursiveFilterIteratorを継承したカスタムフィルタクラスを定義
4// 'A'で始まる文字列のみを許可する
5class FilterStartsWithA extends RecursiveFilterIterator
6{
7    public function accept(): bool
8    {
9        // current()メソッドは、現在位置の要素を取得してフィルタ条件を評価するために使われる
10        return str_starts_with($this->current(), 'A');
11    }
12}
13
14$data = [
15    'Apple',
16    'Banana',
17    'Avocado',
18    'Cherry',
19];
20
21// 配列からイテレータを作成
22$arrayIterator = new RecursiveArrayIterator($data);
23
24// カスタムフィルタを適用
25$iterator = new FilterStartsWithA($arrayIterator);
26
27// フィルタされたイテレータをループ処理
28foreach ($iterator as $key => $value) {
29    // 現在の要素を取得する構文
30    $currentElement = $iterator->current();
31
32    // $valueと$currentElementは同じ値を保持する
33    printf("Key: %s, Value: %s\n", $key, $currentElement);
34}
35
36?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

mixed

RecursiveFilterIterator::currentメソッドは、現在の要素を返します。返される型はmixedです。

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