3 回答
TA贡献1872条经验 获得超3个赞
应该这样做:
<?php
function array_depth(array $array) {
$max_depth = 1;
foreach ($array as $value) {
if (is_array($value)) {
$depth = array_depth($value) + 1;
if ($depth > $max_depth) {
$max_depth = $depth;
}
}
}
return $max_depth;
}
?>
编辑:非常快速地测试了它,它似乎可以工作。
TA贡献1859条经验 获得超6个赞
这是避免Kent Fredric指出的问题的另一种选择。它为print_r()提供了检查无限递归的功能(它做得很好),并使用输出中的缩进来查找数组的深度。
function array_depth($array) {
$max_indentation = 1;
$array_str = print_r($array, true);
$lines = explode("\n", $array_str);
foreach ($lines as $line) {
$indentation = (strlen($line) - strlen(ltrim($line))) / 4;
if ($indentation > $max_indentation) {
$max_indentation = $indentation;
}
}
return ceil(($max_indentation - 1) / 2) + 1;
}
- 3 回答
- 0 关注
- 365 浏览
添加回答
举报