【PHP8.x】hasChildrenメソッドの使い方
hasChildrenメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
『hasChildrenメソッドは、イテレータが指す現在の要素が、さらに子要素を持つかどうかを判定するメソッドです。このメソッドは RecursiveIterator インターフェースで定義されており、多次元配列やディレクトリ構造のような階層的なデータを再帰的に処理する際に不可欠な役割を果たします。RecursiveRegexIteratorのインスタンスに対してこのメソッドを呼び出すと、内部的にラップしているイテレータの hasChildren メソッドが実行されます。もし現在の要素が子要素(例えば、配列内の別の配列や、ディレクトリ内のサブディレクトリなど)を持っている場合は true を、持っていない場合は false を返します。この戻り値は、多くの場合 RecursiveIteratorIterator によって内部的に利用され、再帰処理を続行するか、次の兄弟要素へ進むかを決定するために使われます。hasChildren メソッド自体は正規表現によるフィルタリングを行わず、あくまで構造としての子の有無を確認することに特化しています。このメソッドに引数はありません。
構文(syntax)
1<?php 2 3$array = [ 4 'non-match', 5 'match-1', 6 'parent' => [ 7 'child-match-1', 8 'child-non-match', 9 'child-match-2' 10 ], 11 'match-2' 12]; 13 14$arrayIterator = new RecursiveArrayIterator($array); 15 16// 'match'を含む要素のみを対象とするイテレータ 17$regexIterator = new RecursiveRegexIterator($arrayIterator, '/match/', RecursiveRegexIterator::GET_MATCH); 18 19// 親ノードを先に処理するように設定 20$iterator = new RecursiveIteratorIterator($regexIterator, RecursiveIteratorIterator::SELF_FIRST); 21 22foreach ($iterator as $key => $value) { 23 // 現在の要素が子を持つ(=イテレート可能である)かを確認する 24 if ($iterator->hasChildren()) { 25 echo "Key '$key' is a parent node and has children." . PHP_EOL; 26 } else { 27 echo " - Key '$key' is a leaf node with value: " . $value[0] . PHP_EOL; 28 } 29}
引数(parameters)
引数なし
引数はありません
戻り値(return)
bool
このメソッドは、現在のイテレータ位置に子要素が存在するかどうかを示す論理値(trueまたはfalse)を返します。