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

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

作成日: 更新日:

基本的な使い方

『getChildrenメソッドは、再帰的なイテレーションにおいて、現在の要素が子を持つ場合に、その子要素を処理するための新しいイテレータを生成するメソッドです。このメソッドはRecursiveIteratorインターフェースの一部として定義されており、RecursiveRegexIteratorクラスで実装されています。RecursiveRegexIteratorは、RecursiveDirectoryIteratorのような他の再帰イテレータと組み合わせて使用され、正規表現にマッチする要素のみを抽出します。イテレーションの過程で現在の要素が子要素(例えば、ディレクトリ内のサブディレクトリ)を持つ場合、このgetChildrenメソッドが内部的に呼び出されます。その際、子要素を走査するための新しいイテレータを取得し、それを現在のインスタンスと同じ設定を持つ新しいRecursiveRegexIteratorインスタンスでラップして返します。これにより、子要素の階層に対しても同じ正規表現フィルタリングが再帰的に適用されることになり、ネストされたデータ構造全体から条件に一致する要素だけを一貫して取得することが可能になります。

構文(syntax)

1<?php
2
3$data = [
4    "item-1",
5    [
6        "sub-item-1.1",
7        "sub-item-1.2",
8    ],
9    "item-2"
10];
11
12$arrayIterator = new RecursiveArrayIterator($data);
13$regexIterator = new RecursiveRegexIterator($arrayIterator, '/^.*$/');
14
15// 子を持つ要素(インデックスが1の配列)に移動します
16$regexIterator->seek(1);
17
18// 現在の要素が子を持つかどうかを確認します
19if ($regexIterator->hasChildren()) {
20    // 子要素を処理するための新しいイテレータを取得します
21    $childIterator = $regexIterator->getChildren();
22
23    // 取得したイテレータを使って子要素をループ処理します
24    foreach ($childIterator as $key => $value) {
25        // $valueには "sub-item-1.1"、"sub-item-1.2" が順に代入されます
26    }
27}

引数(parameters)

引数なし

引数はありません

戻り値(return)

RecursiveRegexIterator

RecursiveRegexIterator::getChildren は、現在のイテレーターの次の子要素を RecursiveRegexIterator オブジェクトとして返します。

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