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

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

作成日: 更新日:

基本的な使い方

『hasChildrenメソッドは、ParentIteratorが指している現在の要素が、さらに反復処理が可能な子要素を持つかどうかを判定するために実行するメソッドです。ParentIteratorクラスは、再帰的なデータ構造の中から子を持つ親要素だけを抽出するためのイテレータであり、このメソッドはその判定処理の中核を担います。メソッドを呼び出すと、内部で保持しているイテレータの現在の要素に子が存在するかどうかをチェックします。子要素が存在する場合、例えば多次元配列における内部配列や、ファイルシステムにおけるサブディレクトリなどが該当し、このメソッドはtrueを返します。一方で、現在の要素が子を持たない末端の要素である場合、例えば配列内の数値や文字列、あるいは通常のファイルなどの場合はfalseを返します。このtrueまたはfalseの返り値を利用することで、再帰的な処理の中で、さらに深く探索を続けるべきか、あるいは現在の要素で処理を終えるべきかを判断することができます。この機能はRecursiveIteratorインターフェースで定義されている標準的な機能の一部です。

構文(syntax)

1<?php
2// 再帰的に処理できるデータ(多次元配列)を用意します
3$data = [
4    'システムエンジニア',
5    'プログラマ' => [
6        'Webプログラマ',
7        'ゲームプログラマ',
8    ],
9    'インフラエンジニア',
10];
11
12$iterator = new RecursiveIteratorIterator(
13    new RecursiveArrayIterator($data),
14    RecursiveIteratorIterator::SELF_FIRST // 親要素も処理対象に含めます
15);
16
17foreach ($iterator as $key => $value) {
18    // ParentIterator::hasChildren() を呼び出して
19    // 現在の要素が子要素(この例ではサブ配列)を持つか確認します
20    if ($iterator->hasChildren()) {
21        // 子要素を持つ場合はtrueが返ります
22        echo "{$value} (子要素あり)\n";
23    } else {
24        // 子要素を持たない場合はfalseが返ります
25        echo "  - {$value}\n";
26    }
27}
28?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

bool

現在のイテレータが子要素を持つ場合にtrueを、そうでない場合にfalseを返します。

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