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

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

作成日: 更新日:

基本的な使い方

『LEAVES_ONLY定数は、RecursiveIteratorIteratorクラスの動作モードを指定するための一つの値を表す定数です。RecursiveIteratorIteratorは、多次元配列やディレクトリ構造のように、入れ子になったデータ構造を順番に処理するために使用されるクラスです。この定数をモードとして指定すると、イテレータは「葉(Leaf)」、つまりそれ以上の子要素を持たない末端の要素のみを反復処理の対象とします。例えば、ディレクトリ構造を走査する場合、サブディレクトリ自体はスキップされ、その中にあるファイルのみが処理対象となります。同様に、多次元配列を処理する際には、最も内側にある値だけが取得され、内側に別の配列を含む配列(親要素)は無視されます。このLEAVES_ONLYは、RecursiveIteratorIteratorのコンストラクタでモードを明示的に指定しない場合のデフォルトの動作となります。これにより、再帰的なデータ構造から末端のデータだけを効率的に抽出することが可能になります。』

構文(syntax)

1<?php
2
3$array = [
4    'Web',
5    'Mobile' => ['iOS', 'Android'],
6    'Desktop'
7];
8
9$arrayIterator = new RecursiveArrayIterator($array);
10
11// RecursiveIteratorIterator のコンストラクタの第2引数にフラグを指定します。
12// LEAVES_ONLY を指定すると、子を持たない末端の要素(葉)のみが反復処理の対象となります。
13$iterator = new RecursiveIteratorIterator(
14    $arrayIterator,
15    RecursiveIteratorIterator::LEAVES_ONLY
16);
17
18foreach ($iterator as $value) {
19    echo $value . PHP_EOL;
20}
21
22/*
23実行結果:
24Web
25iOS
26Android
27Desktop
28*/

引数(parameters)

引数なし

引数はありません

戻り値(return)

int

RecursiveIteratorIterator::LEAVES_ONLY は、イテレータを走査する際に、子要素を持たない要素(葉ノード)のみを返すように指示するための定数です。その値は整数 0 です。

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