多次元配列の内、最も深い階層の次元数をカウントする関数を作ってみました。
「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:
- [PHP]switch()は通常では厳密に型を比較しない
- [PHP]トランプのブラックジャックを作る
- [PHP]回転軸を指定して座標を回転させる
- [PHP]FTPでアップロードやダウンロード等のファイル操作を行う
- [PHP]自然言語処理(形態素解析)を利用した簡易全文検索
- [PHP]クラスとオブジェクト指向の練習(タロットカード占い)
- [PHP]配列から空の要素を取り除いて詰める
- [PHP]生年月日(誕生日)から星座を調べる