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

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

作成日: 更新日:

基本的な使い方

BYPASS_KEY定数は、RecursiveTreeIteratorクラスの動作モードを指定するために使用されるフラグを表す定数です。この定数をRecursiveTreeIteratorのコンストラクタに渡すと、イテレータのkey()メソッドが返す値の挙動が変更されます。通常、key()メソッドは内部で走査している要素のキーを返しますが、BYPASS_KEYフラグが有効な場合、key()メソッドは要素のキーを返さず、代わりにcurrent()メソッドと全く同じ値を返すようになります。current()メソッドは、木構造の階層を示すプレフィックスと要素の値を連結した文字列を返すため、結果としてkey()current()の両方が同じ整形済み文字列を返すことになります。この機能は、元のデータのキー情報を無視して、値だけを階層構造として表示したい場合に便利です。この定数は、new RecursiveTreeIterator($iterator, RecursiveTreeIterator::BYPASS_KEY)のように、コンストラクタの第2引数または第3引数でフラグとして指定します。

構文(syntax)

1<?php
2
3$data = [
4    'fruits' => ['apple', 'banana'],
5    'vegetables' => ['carrot', 'potato']
6];
7
8$arrayIterator = new RecursiveArrayIterator($data);
9
10// RecursiveTreeIterator のコンストラクタでフラグとして BYPASS_KEY を指定します。
11// これにより、イテレーションでキーの代わりに値が使用されるようになります。
12$treeIterator = new RecursiveTreeIterator(
13    $arrayIterator,
14    RecursiveTreeIterator::BYPASS_KEY
15);
16
17foreach ($treeIterator as $value) {
18    echo $value . PHP_EOL;
19}
20
21?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

int

BYPASS_KEY は、RecursiveTreeIterator クラスの定数であり、内部処理でキーをスキップするために使用されます。この定数は整数値 1 を返します。