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

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

作成日: 更新日:

基本的な使い方

getInnerIteratorメソッドは、RecursiveIteratorIteratorオブジェクトが現在処理している内部イテレータを取得するために実行するメソッドです。RecursiveIteratorIteratorは、ディレクトリとサブディレクトリのような階層構造を持つデータを、入れ子の深い階層まで含めて順番に処理するために使用されます。このクラスは、元の階層構造を持つイテレータを内部に保持し、それを一つの連続したリストのように扱えるようにします。ループ処理を行う中で、current()メソッドが現在の要素の値(例えばファイルパスなど)を返すのに対し、getInnerIteratorメソッドは、その要素を管理しているイテレータオブジェクトそのものを返します。これにより、現在どの階層のどのイテレータを処理しているかを正確に把握することが可能になります。例えば、現在の階層が子要素を持つかどうかを判定したり、現在の階層に対して特定の操作を行ったりするなど、再帰的な処理の途中でより詳細なコンテキスト情報を取得し、複雑な制御を実現したい場合に役立ちます。

構文(syntax)

1<?php
2
3$array = new RecursiveArrayIterator([
4    'a',
5    'b',
6    ['c', 'd']
7]);
8
9$iterator = new RecursiveIteratorIterator($array);
10
11// イテレータをループ処理
12foreach ($iterator as $key => $value) {
13    // 現在の階層で動作している内部イテレータ(RecursiveArrayIterator)を取得
14    $innerIterator = $iterator->getInnerIterator();
15
16    // 内部イテレータのクラス名と、そのイテレータ内での現在のキーを表示
17    printf(
18        "Class: %s, Inner Key: %s, Value: %s\n",
19        get_class($innerIterator),
20        $innerIterator->key(),
21        $value
22    );
23}
24
25?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

RecursiveIterator

このメソッドは、現在のイテレータがラップしている内部のRecursiveIteratorを返します。