Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】RecursiveIteratorIterator::setMaxDepth()メソッドの使い方

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

作成日: 更新日:

基本的な使い方

『setMaxDepthメソッドは、RecursiveIteratorIteratorが再帰的なデータ構造を走査する際の、最大深度を設定するメソッドです。このメソッドは、ディレクトリ構造や多次元配列のようなネストした要素を処理する際に、どれだけ深い階層まで辿るかを制限するために使用されます。引数には整数値で最大深度を指定します。例えば0を指定した場合はトップレベルの要素のみが対象となり、1を指定するとトップレベルとその直下の子要素までが処理範囲となります。デフォルト値は-1で、これは深度に制限がないことを意味し、すべての階層を走査します。引数に-1未満の数値を渡すとExceptionがスローされるため注意が必要です。このメソッドを適切に設定することで、意図しない無限再帰ループを防いだり、処理のパフォーマンスを最適化したりすることが可能になります。なお、このメソッド自体は値を返しません。

構文(syntax)

1<?php
2// 再帰的に処理する多次元配列を定義します
3$array = [
4    'fruit' => 'apple',
5    'colors' => [
6        'red',
7        'blue',
8        'deep_colors' => [
9            'dark red', // この階層の要素は処理されません
10            'navy'
11        ]
12    ],
13    'shape' => 'circle'
14];
15
16// 配列用の再帰イテレータを作成します
17$iterator = new RecursiveIteratorIterator(
18    new RecursiveArrayIterator($array)
19);
20
21/*
22 * 構文: public RecursiveIteratorIterator::setMaxDepth(int $maxDepth = -1): void
23 *
24 * イテレータが辿る最大の深さを整数で設定します。
25 * 0はトップレベルのみを意味します。
26 */
27$iterator->setMaxDepth(1); // 深さ1 (colors配列の中) までに制限
28
29// 設定した深さの範囲でループ処理を実行します
30foreach ($iterator as $key => $value) {
31    echo "$key => $value" . PHP_EOL;
32}
33?>

引数(parameters)

int $maxDepth = -1

  • int $maxDepth = -1: 再帰イテレータの最大反復深度を指定する整数。デフォルトは -1 で、無制限を意味します。

戻り値(return)

戻り値なし

戻り値はありません

関連コンテンツ