【问题标题】:Output of the multilevel dropdown menu多级下拉菜单的输出
【发布时间】:2018-05-03 11:49:54
【问题描述】:

我有一个包含数据的数组:

$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/ 没有按需要显示,我只是一个代码示例的例子。

【问题讨论】:

  • 您在哪个平台上工作(核心 phpm WordPress 或任何其他)?

标签: php html twitter-bootstrap


【解决方案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),但在这种情况下,递归是解决方案。

见:https://www.sitepoint.com/understanding-recursion/

【讨论】:

  • 我不知道如何正确挂起类 'dropdown-menu' 和 'dropdown-submenu' - 这是整个问题
  • 有 'ul' 和 'li' 没有类我知道如何输出
猜你喜欢
  • 2015-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多