【PHP8.x】setPrefixPartメソッドの使い方

setPrefixPartメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

『setPrefixPartメソッドは、RecursiveTreeIteratorが木構造のデータを反復処理する際に、各要素の前に表示される接頭辞(プレフィックス)の特定の部分を、任意の文字列に設定するメソッドです。このメソッドを使用することで、データの階層構造を視覚的に表現する際の見た目を細かくカスタマイズすることが可能になります。メソッドは2つの引数を取ります。第一引数には、設定対象となる接頭辞のパーツを指定するための定数を渡します。これには、兄弟要素がある場合の中間部分を示すRecursiveTreeIterator::PREFIX_MIDや、最後の要素の終端部分を示すRecursiveTreeIterator::PREFIX_ENDなどがあります。第二引数には、そのパーツとして実際に表示させたい文字列を指定します。例えば、「|-- 」や「└── 」といった文字列を適切に設定することで、コマンドラインのtreeコマンドのような階層的な出力を柔軟に生成できます。デフォルトの接頭辞を変更し、独自の記号やスタイルで階層を表示したい場合に非常に便利です。このメソッドは値を返しません。

構文(syntax)

1<?php
2// サンプルデータ
3$data = [
4    'Item 1',
5    'Item 2' => [
6        'SubItem 2.1',
7        'SubItem 2.2',
8    ],
9    'Item 3',
10];
11
12// イテレータのインスタンスを作成
13$arrayIterator = new RecursiveArrayIterator($data);
14$treeIterator = new RecursiveTreeIterator($arrayIterator);
15
16// setPrefixPart を使ってツリー表示のスタイルを変更する
17$treeIterator->setPrefixPart(RecursiveTreeIterator::PREFIX_MID_HAS_NEXT, "┣☛ ");
18$treeIterator->setPrefixPart(RecursiveTreeIterator::PREFIX_END_LAST, "┗☛ ");
19$treeIterator->setPrefixPart(RecursiveTreeIterator::PREFIX_END_HAS_NEXT, "┣☛ ");
20$treeIterator->setPrefixPart(RecursiveTreeIterator::PREFIX_LEFT, "┃  ");
21
22
23// 結果をループして表示
24foreach ($treeIterator as $key => $value) {
25    echo $treeIterator->getPrefix() . $value . PHP_EOL;
26}

引数(parameters)

int $part, string $value

  • int $part: 接頭辞を構成する部分を指定する整数。0は区切り文字、1は要素名、2はパスを表します。
  • string $value: 指定した部分に設定する文字列

戻り値(return)

void

このメソッドは値を返しません。