【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 は、イテレータが子配列のみを走査するように設定するための整数定数です。