比如:
$world = array(
'中国'=>array(
'黑龙江省'=>array(
'佳木斯市'=>array(
'桦南县'=>array(
'闫家镇','八浪乡','二道沟','梨树'
)
)
)
)
);
这是四维的
$world = array(
'中国'=>array(
'黑龙江省'=>array()
)
)
);这个是三维的
有什么函数能够返回数组的维度吗?
$world = array(
'中国'=>array(
'黑龙江省'=>array(
'佳木斯市'=>array(
'桦南县'=>array(
'闫家镇','八浪乡','二道沟','梨树'
)
)
)
)
);
这是四维的
$world = array(
'中国'=>array(
'黑龙江省'=>array()
)
)
);这个是三维的
有什么函数能够返回数组的维度吗?
$world = array(
'中国'=>array(
'黑龙江省'=>array(
'佳木斯市'=>array(
'桦南县'=>array(
'闫家镇','八浪乡','二道沟','梨树'
)
)
)
)
);echo '<pre>';
print_r($world);
?>数一下最高那个出现多少次 array 就可以
结果是5维
array();
1维度
array(array());
2维度
...
array(array(array(array())));
4维度
<?php
// return depth of given array
// if Array is a string ArrayDepth() will return 0
// usage: int ArrayDepth(array Array)function ArrayDepth($Array,$DepthCount=-1,$DepthArray=array()) {
$DepthCount++;
if (is_array($Array))
foreach ($Array as $Key => $Value)
$DepthArray[]=ArrayDepth($Value,$DepthCount);
else
return $DepthCount;
foreach($DepthArray as $Value)
$Depth=$Value>$Depth?$Value:$Depth;
return $Depth;
}//example
$world = array(
'中国'=>array(
'黑龙江省'=>array(
'佳木斯市'=>array(
'桦南县'=>array(
'闫家镇','八浪乡','二道沟','梨树'
)
)
)
)
); $depth=ArrayDepth($world);
echo $depth; //请网友注意这是个5维数组,并不是4维。
?>
$world = array(
'中国'=>array(
'黑龙江省'=>array(
'佳木斯市'=>array(
'桦南县'=>array(
'闫家镇','八浪乡','二道沟','梨树'
)
)
)
)
);
function array_deep($array)
{
$maxdeep = 1;
foreach($array as $v)
{
if(is_array($v)){
$deep = array_deep($v) + 1;
$deep > $maxdeep && $maxdeep = $deep;
}
}
return $maxdeep;
}
echo array_deep($world);
然后解析Array( 和 )的匹配深度,是个push和pop的过程,应该不难实现。
function ArrayDepth($Array,$DepthCount=-1,$DepthArray=array()) {
$DepthCount++;
if (is_array($Array))
foreach ($Array as $Key => $Value)
$DepthArray[]=ArrayDepth($Value,$DepthCount);
else
return $DepthCount;
foreach($DepthArray as $Value)
$Depth=$Value>$Depth?$Value:$Depth;
return $Depth;
}
?>有没有搞错啊,不是写给你了吗?还让我帮你解决什么问题?晕~~~
{
$deep = 1;
print_r($arr);
foreach ($arr as $k=>$v) {
if (is_array($v))
$d = array_deep($v)+1;
else
$d = 1;
if ($d>$deep)
$deep = $d;
}
return $deep;
}
{
$deep = 1;
foreach ($arr as $k=>$v) {
if (is_array($v))
$d = array_deep($v)+1;
else
$d = 1;
if ($d>$deep)
$deep = $d;
}
return $deep;
}
function array_deep($str)
{
static $deep = 0;
if(is_array($str))
{
$deep++;
foreach($str as $k=>$v)
{
array_deep($v);
}
}
return $deep;
}
我总结了下感觉这样更好些,谢谢 2分钟后结贴(可惜还是递归)