給定任意多維陣列,回傳其最大嵌套深度(維度)。例如:
array('a', 'b') → 1array(array(1,2), array(3,4)) → 2array(array(array(1))) → 3function arrayLevel($arr) {
$levels = [0]; // 儲存每個分支深度
function traverse($arr, &$levels, $level = 0) {
if (is_array($arr)) {
$level++;
$levels[] = $level;
foreach ($arr as $v) {
traverse($v, $levels, $level);
}
}
}
traverse($arr, $levels);
return max($levels);
}
// 測試
$arr = ['0' => '0'];
echo arrayLevel($arr); // 輸出 1
&$levels 收集所有分支深度。$level 並遞迴遍歷子元素。max($levels) 即為最大維度。function arrayDepth($array) {
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));
$maxDepth = 0;
foreach ($iterator as $key => $value) {
$maxDepth = max($maxDepth, $iterator->getDepth() + 1);
}
return $maxDepth;
}
SPL 版本更簡潔且效能較好,推薦 PHP 5.1+ 環境使用。