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

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

作成日: 更新日:

基本的な使い方

CHILD_FIRST定数は、RecursiveTreeIteratorクラスが階層構造を持つデータを走査(イテレーション)する際の順序を指定するための定数です。この定数をコンストラクタのフラグとして設定すると、イテレータはまず現在位置の子要素をすべて処理し、その後に親要素自身を処理するようになります。この処理方法は一般に「後行順(post-order)」巡回と呼ばれ、ツリー構造の末端から根に向かって処理を進める動作を実現します。例えば、ディレクトリ構造を扱う場合、先にディレクトリ内のファイルやサブディレクトリがすべて処理され、最後にその親ディレクトリ自体が処理されるという順序になります。これは、親要素を先に処理するデフォルトの挙動であるSELF_FIRST定数とは逆の動作です。CHILD_FIRST定数は、子要素の処理が完了した後に親要素の処理を行いたい場合、例えば、サブディレクトリのサイズを合計して親ディレクトリのサイズを計算するようなシナリオで特に有効です。使用するには、RecursiveTreeIteratorのインスタンスを生成する際に、コンストラクタの第2引数にこの定数を渡します。

構文(syntax)

1<?php
2
3$data = [
4    'Root Node',
5    'Parent Node' => [
6        'Child Node 1',
7        'Child Node 2',
8    ],
9];
10
11$arrayIterator = new RecursiveArrayIterator($data);
12
13$treeIterator = new RecursiveTreeIterator(
14    $arrayIterator,
15    RecursiveTreeIterator::CHILD_FIRST
16);
17
18foreach ($treeIterator as $value) {
19    echo $treeIterator->getPrefix() . $value . PHP_EOL;
20}
21
22?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

int

RecursiveTreeIterator::CHILD_FIRST は、イテレータの順序を指定するための定数であり、整数値 1 を返します。この定数は、子要素を親要素よりも先に走査するモードを示します。