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

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

作成日: 更新日:

基本的な使い方

LEAVES_ONLY定数は、RecursiveTreeIteratorクラスの動作モードを指定するために使用される、定義済みの整数値を表す定数です。この定数をフラグとして指定することで、イテレータの振る舞いを「葉のみ(leaves only)」に設定します。このモードが有効な場合、RecursiveTreeIteratorは階層構造のデータを走査する際に、子要素を一切持たない末端の要素、つまり木構造における「葉」に相当する要素だけを返します。途中の階層にある親要素(枝)は、たとえ走査の経路上にあったとしても、イテレーションの結果としては完全に無視されます。この機能は、例えばディレクトリツリーからファイルだけを抽出したり、多次元配列から末端の値だけを取り出したりする場合に特に役立ちます。この動作を適用するには、RecursiveTreeIteratorクラスのコンストラクタの第二引数にこの定数を渡すか、後からsetMode()メソッドで指定します。

構文(syntax)

1<?php
2$data = [
3    'Fruit' => [
4        'Apple',
5        'Banana',
6    ],
7    'Vegetable' => [
8        'Carrot',
9        'Tomato',
10    ],
11    'Grain' => 'Rice',
12];
13
14$arrayIterator = new RecursiveArrayIterator($data);
15
16// LEAVES_ONLY フラグを指定すると、ツリー構造の末端の要素(葉)のみが返されます。
17// この例では 'Apple', 'Banana', 'Carrot', 'Tomato', 'Rice' が出力されます。
18$treeIterator = new RecursiveTreeIterator(
19    $arrayIterator,
20    RecursiveTreeIterator::LEAVES_ONLY
21);
22
23foreach ($treeIterator as $value) {
24    echo $value . PHP_EOL;
25}
26?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

戻り値なし

戻り値はありません