时间:2021-07-01 10:21:17 帮助过:16人阅读
例如有一个多维数组:
array(
array(
array(1,3,4),
array(
array(
1,2,3
)
)
),
array(
array(1,2),
array(1)
)
)
这个数组的深度就是5,那么如何快速的确定一个数组深度.
解决方案1:
使用SPL中的Iterator,在RecursiveIteratorIterator 类中有个getDepth方法,获得深度
解决方案2:
解决方案3:
$arr = array(array( array(array(“5″, “6″), “7″, “8″)),2,array(array(array(“5″, “6″), “7″, “8″,array( “7″,“8″))),4);
echo getArrDemp($arr);
function getArrDemp($array){
static $offset = 0;
$arr_str = serialize($array);
$num = substr_count($arr_str,'{');
$result = array();
for($i=0;$i<$num;$i++){
$l_pos = strpos($arr_str, '{', $offset);
$temp_str = substr($arr_str,0,$l_pos);
$offset = $l_pos + 1;
$result[] = substr_count($temp_str,'{')-substr_count($temp_str,'}');
}
array_multisort($result,SORT_DESC);
return ++$result[0];
}
解决方案4:递归实现
解决方案5:简单的计算深度函数:
$max_depth) {
$max_depth = $depth;
}
}
}
return $max_depth;
}
$array = array( array("11"), array(),array( array(array("5", "6"), "7", "8")),array( array(array("5", "6"), "7", "8")), "9", "10");
echo array_depth($array);
?>