【PHP8.x】CHILD_ARRAYS_ONLY定数の使い方

CHILD_ARRAYS_ONLY定数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

『CHILD_ARRAYS_ONLY定数は、多次元配列を再帰的に処理するためのRecursiveArrayIteratorクラスの動作を制御するフラグを表す定数です。この定数をRecursiveArrayIteratorのインスタンス生成時に指定すると、再帰の対象となる子要素の判定基準が変更されます。具体的には、hasChildrenメソッドが、現在の要素が純粋な配列である場合にのみtrueを返すようになります。この結果、イテレータは配列である要素に対してのみ再帰的に処理を行い、下位の階層へ進みます。このフラグを指定しない場合のデフォルトの動作では、hasChildrenメソッドは配列だけでなく、ArrayAccessインターフェースを実装したオブジェクトも子要素を持つと判断します。したがって、CHILD_ARRAYS_ONLYは、処理対象を厳密に配列のみに限定し、オブジェクトを子要素として扱いたくない場合に非常に有効です。この定数は、RecursiveArrayIteratorのコンストラクタの第2引数である$flagsに渡して使用します。』

構文(syntax)

1<?php
2
3$data = [
4    'associative_array' => ['a' => 'apple', 'b' => 'banana'],
5    'numeric_array' => ['cherry', 'orange'],
6    'scalar_value' => 'lemon'
7];
8
9// CHILD_ARRAYS_ONLY フラグを指定すると、連想配列のみが子要素として再帰的に処理されます。
10// この例では 'numeric_array' は無視されます。
11$iterator = new RecursiveIteratorIterator(
12    new RecursiveArrayIterator($data, RecursiveArrayIterator::CHILD_ARRAYS_ONLY)
13);
14
15foreach ($iterator as $key => $value) {
16    echo "{$key}: {$value}" . PHP_EOL;
17}
18
19?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

int

RecursiveArrayIterator::CHILD_ARRAYS_ONLY は、イテレータが子配列のみを走査するように設定するための整数定数です。

【PHP8.x】CHILD_ARRAYS_ONLY定数の使い方 | いっしー@Webエンジニア