我正在尝试通过递归函数将php数组格式化为可视树,但由于某种原因它似乎不起作用。它只打印第一级。这是我的代码。
function recursiveMenu($arr){
$maketree = "";
if(is_array($arr)){
foreach($arr as $key => $val){
if(is_array($val)){
$maketree .= "<div class='expcol jexpand'><a>[-]</a>".$key."</div>"
. "<div class='section jsection'>";
recursiveMenu($val);
}else{
$maketree .= "<div>".TB.TB." <a href='index.php?action=". $val . "' >"
. "<div class='menuitem'>" . $val . "</div>"
. "</a></div>";
}
$maketree .="</div>";
}
}
return $maketree;
}
function makeMenu($srch) {
$makemenu = "<div>";
$makemenu .= recursiveMenu($srch);
$makemenu .= "</div>"; // </a>
return $makemenu;
}
以下是我的数据库结果:
$srch = Array(
[Asia] => Array(
[South] => Array(
[India] => Array(
[0] => Mumbai
[1] => New Delhi
[2] => Chennai
)
)
)
[Europe] => Array(
[West] => Array(
[Spain] => Array(
[0] => Madrid
)
)
[North] => Array(
[Denmark] => Array(
[0] => Copenhagen
)
)
)
[Americas] => Array(
[South] => Array(
[Brazil] => Array(
[0] => Brasilia
)
)
[North] => Array(
[USA] => Array(
[0] => Los Angeles
[1] => Atlanta
[2] => Boston
[3] => Houston
)
)
[Central] => Array(
[Mexico] => Array(
[0] => Cancun
[1] => Mexico city
)
)
)
[Africa] => Array(
[South] => Array(
[South Africa] => Array(
[0] => Cape Town
[1] => Johannesburg
)
)
)
)
我得到的实际结果是(仅限第一级):
[-]Asia
[-]Europe
[-]Americas
[-]Africa
有人看到这里有什么问题吗?提前谢谢。
答案 0 :(得分:1)
你忘了将第二次递归调用的结果附加到recursiveMenu()到输出。我认为您需要将第8行更改为:
$maketree .= recursiveMenu($val);