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

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

作成日: 更新日:

基本的な使い方

getDepthメソッドは、再帰的な繰り返し処理における現在の要素の階層の深さを取得するメソッドです。このメソッドは、木構造のような階層を持つデータを扱うRecursiveTreeIteratorクラスに属しています。RecursiveTreeIteratorを用いて配列やオブジェクトの階層をたどる際にgetDepthを呼び出すと、現在処理している要素がどの深さに位置するかを示す整数値が返されます。最上位の階層、つまりルート要素の深さは0として扱われます。その直下の子要素は1、さらにその下の子要素は2というように、階層が一つ深くなるごとに値が1ずつ増加します。このメソッドが返す深度の値を利用することで、例えばディレクトリ構造をインデント付きで表示するなど、階層に応じた出力の整形や処理の分岐が可能になります。このメソッドに引数はなく、返り値は現在の階層の深さを表す整数値です。

構文(syntax)

1<?php
2
3$data = [
4    "root",
5    "branch1" => [
6        "leaf1.1",
7        "leaf1.2",
8    ],
9    "branch2" => [
10        "leaf2.1",
11        "sub-branch" => [
12            "leaf2.2.1"
13        ]
14    ]
15];
16
17$arrayIterator = new RecursiveArrayIterator($data);
18$treeIterator = new RecursiveTreeIterator($arrayIterator);
19
20foreach ($treeIterator as $value) {
21    // getDepth() は現在の階層の深さを整数(0から始まる)で返します。
22    $depth = $treeIterator->getDepth();
23
24    // 深さに応じてインデントを付けて、ツリー構造を視覚的に表現します。
25    echo str_repeat("    ", $depth);
26    echo $value . PHP_EOL;
27}

引数(parameters)

引数なし

引数はありません

戻り値(return)

int

現在のイテレータがツリー構造のどの階層にいるかを示す整数値を返します。