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

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

作成日: 更新日:

基本的な使い方

SELF_FIRST定数は、RecursiveTreeIteratorクラスにおける反復処理の順序を指定するための定数です。この定数をRecursiveTreeIteratorのコンストラクタに渡すことで、イテレータが階層構造のデータをどのように走査するかを制御できます。SELF_FIRSTが指定された場合、イテレータはまず現在の要素(親要素)自身を処理対象とし、その後に子要素の処理へ移ります。この動作は、ツリー構造の探索において「先行順巡回(pre-order traversal)」と呼ばれる方式に相当します。例えば、ディレクトリとファイルのツリーを処理する際に、まずディレクトリ名を取得し、次にそのディレクトリ内に含まれるファイルやサブディレクトリを順に処理していくような場合に利用されます。なお、このSELF_FIRSTはRecursiveTreeIteratorのデフォルトの動作モードであるため、特にモードを指定しなかった場合はこの順序で処理が実行されます。

構文(syntax)

1<?php
2
3$data = [
4    'A',
5    'B' => [
6        'C',
7        'D',
8    ],
9    'E',
10];
11
12$arrayIterator = new RecursiveArrayIterator($data);
13
14// RecursiveTreeIteratorのコンストラクタの第2引数に SELF_FIRST を指定します。
15// これにより、親ノードが子ノードより先に処理されます。
16$treeIterator = new RecursiveTreeIterator(
17    $arrayIterator,
18    RecursiveTreeIterator::SELF_FIRST
19);
20
21foreach ($treeIterator as $item) {
22    echo $item . PHP_EOL;
23}

引数(parameters)

引数なし

引数はありません

戻り値(return)

戻り値なし

戻り値はありません

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