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

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

作成日: 更新日:

基本的な使い方

getDepthメソッドは、RecursiveIteratorIteratorによる繰り返し処理において、現在の要素が元のデータ構造のどの階層にあるか、その深さを取得するために実行するメソッドです。この「深さ」とはネストのレベルを表し、最も外側の階層が0から始まります。例えば、多次元配列を処理している場合、一番外側の配列要素の深さは0、その配列に含まれる配列要素の深さは1となります。RecursiveIteratorIteratorは、ディレクトリツリーや複雑な配列のような再帰的な構造を持つデータを、順番に一つずつ処理できるように平坦化します。getDepthメソッドを使用することで、平坦化されたループ処理の内部で、現在の要素が元々の階層構造のどこに位置していたかを簡単に知ることができます。この機能は、ファイルシステムのディレクトリ構造をインデント付きで表示したり、階層レベルに応じて異なる処理を適用したりする際に特に役立ちます。メソッドは引数を取らず、現在の深さを表す整数(int)を返します。この戻り値を利用して、条件分岐などを行い、プログラムのロジックを制御することが可能です。

構文(syntax)

1<?php
2
3$data = [
4    'Item 1',
5    'Item 2',
6    [
7        'Item 2.1',
8        'Item 2.2',
9        [
10            'Item 2.2.1',
11        ],
12    ],
13    'Item 3',
14];
15
16$iterator = new RecursiveIteratorIterator(
17    new RecursiveArrayIterator($data)
18);
19
20foreach ($iterator as $key => $value) {
21    // getDepth()で現在の階層の深さを取得します(0から始まります)
22    $depth = $iterator->getDepth();
23    
24    // 取得した深さを値と共に出力します
25    echo "Depth: {$depth}, Value: {$value}" . PHP_EOL;
26}

引数(parameters)

引数なし

引数はありません

戻り値(return)

int

現在のイテレータの深さを整数で返します。

【PHP8.x】getDepthメソッドの使い方 | いっしー@Webエンジニア