有没有办法找出PHP数组的“深度”?
2022-08-30 09:26:32
PHP 数组可以包含其元素的数组。这些数组可以有数组等等。有没有办法找出PHP数组中存在的最大嵌套?例如,如果初始数组没有数组作为元素,则返回 1;如果至少有一个元素是数组,则返回 2,依此类推。
PHP 数组可以包含其元素的数组。这些数组可以有数组等等。有没有办法找出PHP数组中存在的最大嵌套?例如,如果初始数组没有数组作为元素,则返回 1;如果至少有一个元素是数组,则返回 2,依此类推。
这是另一种选择,可以避免肯特·弗雷德里克(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;
}
这应该这样做:
<?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;
}
?>
编辑:测试得非常快,它似乎有效。