【问题标题】:PHP Array to menu treePHP数组到菜单树
【发布时间】:2016-06-17 07:44:48
【问题描述】:

我正在尝试通过递归函数将 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;
}

下面是我从 DB 得到的数组结果:

$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

有人看到这里出了什么问题吗?提前致谢。

【问题讨论】:

    标签: php arrays recursion tree


    【解决方案1】:

    您是否忘记将第二次递归调用 recursiveMenu() 的结果附加到输出中。我认为您需要将第 8 行更改为:

    $maketree .= recursiveMenu($val);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多