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

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

作成日: 更新日:

基本的な使い方

『currentメソッドは、再帰的な処理の過程で、親イテレータが現在指し示している要素を取得するために実行するメソッドです。このメソッドはParentIteratorクラスに属しており、ParentIteratorオブジェクトは通常、RecursiveIteratorIterator::getParent()メソッドを呼び出すことで取得されます。例えば、多次元配列やディレクトリ構造のような階層的なデータを走査する場合、RecursiveIteratorIteratorは最も内側の子要素を順に指し示します。このとき、現在処理している子要素の親に関する情報を取得したい場合があります。ParentIterator::current()を呼び出すと、現在の子要素を含んでいる親のコレクションにおいて、イテレータが指している現在の要素が返されます。ディレクトリ走査の例では、あるファイルを指しているときにこのメソッドを使うと、そのファイルが属している親ディレクトリを表すオブジェクトが返されます。これにより、階層構造を遡って親のデータにアクセスすることが可能になります。戻り値の型は、親イテレータが指す要素によって異なるためmixed型となります。

構文(syntax)

1<?php
2
3$data = [
4    'fruits' => [
5        'apple',
6        'banana'
7    ],
8    'vegetables' => [
9        'carrot',
10        'potato'
11    ]
12];
13
14$arrayIterator = new RecursiveArrayIterator($data);
15$parentIterator = new ParentIterator($arrayIterator);
16$iterator = new RecursiveIteratorIterator($parentIterator, RecursiveIteratorIterator::SELF_FIRST);
17
18foreach ($iterator as $key => $value) {
19    // 子要素を処理している時のみ実行
20    if (!$parentIterator->hasChildren()) {
21        // current()メソッドで現在の親イテレータを取得します
22        $currentParent = $parentIterator->current();
23        
24        // 親イテレータのキーと、現在の要素の値を表示します
25        printf("Parent: %s, Item: %s\n", $currentParent->key(), $value);
26    }
27}

引数(parameters)

引数なし

引数はありません

戻り値(return)

mixed

現在の要素を返します。要素が存在しない場合はnullを返します。

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