我有一个包含数据的数组:
$arr=[1=>['id'=>1,'value'=>"Main",'id_parent'=>0],
2=>['id'=>2,'value'=>"Port",'id_parent'=>0,'children'=>[
3=>['id'=>3,'value'=>"Auto",'id_parent'=>2],
4=>['id'=>4,'value'=>"Busy",'id_parent'=>2],
5=>['id'=>5,'value'=>"Sury",'id_parent'=>2,'children'=>[
6=>['id'=>6,'value'=>"Truk",'id_parent'=>5]]]]]];
我不能像树状菜单那样把它拿出来...我的代码:
<li class="dropdown">
<a href="#" class="dropdown-toggle menu-items" data-toggle="dropdown" role="button" aria-expanded="false">Menu<span class="caret"></span></a>
<?php
function createTemplateMenu($value){
$menu = "<ul class='dropdown-menu'>";
if (isset($value['children'])) $menu .= "<li class='dropdown-submenu'>" . showCat($value['children']) . "</li>";
$menu .= "<li><a href=''>{$value['value']}</a></li></ul>";
return $menu;
}
function showCat($data){
$string = "";
foreach ($data as $item) {
$string .= createTemplateMenu($item);
}
return $string;
}
echo showCat($arr);?>
</li>
在html上它看起来像这样:https://jsfiddle.net/ob8yo5nL/它没有按需显示,我只是一个代码示例的例子。
答案 0 :(得分:1)
你需要的是一个递归 - 一个自我调用的递归函数,如下所示:
function showCat($data){
$string = "";
foreach ($data as $item) {
$string .= createTemplateMenu($item);
if(array_key_exists("children", $item) && is_array($item['children'])) {
$string .= showCat($item['children']);
}
return $string;
}
这只是一个例子。你需要做更多的工作并重新考虑你的渲染函数(createTemplateMenu
),但在这种情况下递归是解决方案。