[PHP]多次元配列の次元の深さ(階層)を調べる

Pocket

多次元配列の内、最も深い階層の次元数をカウントする関数を作ってみました。
「123」などの配列でないものは 0 を返し、「array(1,2,3)」等の場合は 1 を返します。
「$arr[0][0][0][0][0] = 123」だと 5 になります。
「array(1, array(2), 3)」のように混在している場合は最も深いものを返すので 2 になります。

function array_depth($arr, $blank=false, $depth=0){
	if( !is_array($arr)){
		return $depth;
	} else {
		$depth++;
		$tmp = ($blank) ? array($depth) : array(0);
		foreach($arr as $value){
			$tmp[] = array_depth($value, $blank, $depth);
		}
		return max($tmp);
	}
}

「array( array() )」など、配列の内容が空の場合、デフォルトでは 0 になりますが、
$blank を true にすることで 2 としてカウントすることもできます。


Similar Posts:




コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です