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

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

作成日: 更新日:

基本的な使い方

callHasChildrenメソッドは、現在のイテレータの要素が子要素を持つかどうかを判定するために呼び出されるメソッドです。このメソッドは、RecursiveTreeIteratorがツリーのような階層構造を持つデータを再帰的に走査する過程で、各要素に対して内部的に使用されます。具体的には、このメソッドはラップしているイテレータのhasChildren()メソッドを呼び出し、その結果をそのまま返します。RecursiveTreeIteratorは、callHasChildrenメソッドの戻り値をもとに、出力するツリーの見た目を整形します。メソッドがtrueを返した場合、現在の要素は子を持つ「枝」であると判断されます。逆にfalseを返した場合は、子を持たない末端の「葉」であると見なされます。この判定結果は、各行の先頭に付与される接頭辞(|-- など)を決定するために利用され、階層構造を視覚的に表現する上で重要な役割を果たします。

構文(syntax)

1<?php
2
3$data = [
4    'Item 1',
5    'Item 2' => [
6        'Sub-item 2.1',
7        'Sub-item 2.2',
8    ],
9    'Item 3',
10];
11
12$arrayIterator = new RecursiveArrayIterator($data);
13$treeIterator = new RecursiveTreeIterator($arrayIterator);
14
15foreach ($treeIterator as $key => $value) {
16    // 現在の要素が子ノードを持つかどうかを判定します
17    if ($treeIterator->callHasChildren()) {
18        echo "{$value} (子あり)\n";
19    } else {
20        echo "{$value} (子なし)\n";
21    }
22}
23
24?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

bool

RecursiveTreeIterator::callHasChildren は、現在の要素が子要素を持っているかどうかを示す真偽値 (bool) を返します。子要素があれば true、なければ false を返します。