【问题标题】:I want to build a tree with this array . These are the Id's os categories and sub categories我想用这个数组构建一棵树。这些是类别和子类别的 ID
【发布时间】:2012-11-04 03:31:45
【问题描述】:

我正在尝试将扁平的 mysql 行转换为树结构。这是类别和子类别的ID

数组 ( [50] => 数组 ( [70] => 数组 ( [0] => 数组 ( [73] => 数组 ( [80] => 数组 ( )

                            )

                        [74] => Array
                            (
                            )

                        [75] => Array
                            (
                            )

                    )

            )

        [71] => Array
            (
                [0] => Array
                    (
                    )

            )

        [72] => Array
            (
                [0] => Array
                    (
                    )

            )

        [73] => Array
            (
                [0] => Array
                    (
                        [80] => Array
                            (
                            )

                    )

            )

        [74] => Array
            (
                [0] => Array
                    (
                    )

            )

        [75] => Array
            (
                [0] => Array
                    (
                    )

            )

        [80] => Array
            (
                [0] => Array
                    (
                    )

            )

    )

[51] => Array
    (
        [76] => Array
            (
                [0] => Array
                    (
                        [77] => Array
                            (
                            )

                    )

            )

        [77] => Array
            (
                [0] => Array
                    (
                    )

            )

        [78] => Array
            (
                [0] => Array
                    (
                        [79] => Array
                            (
                                [81] => Array
                                    (
                                    )

                            )

                    )

            )

        [79] => Array
            (
                [0] => Array
                    (
                        [81] => Array
                            (
                            )

                    )

            )

        [81] => Array
            (
                [0] => Array
                    (
                    )

            )

    )

)

我想要这样输出

 <ul id="red" class="treeview-famfamfam">
    <li>50
        <ul> <li> 70 
                <ul><li> 73 <ul> 
                                <li> 80</li></ul>
                    </li>
                    <li> 74</li>
                    <li>75 </li>
                    </ul>
            </li>
            <li>71</li>
            <li> 72</li>
            </ul>
            </li>

基本上,我需要构建一个包含类别子类别子子......类别等的树。 提前致谢

【问题讨论】:

    标签: php arrays nested


    【解决方案1】:

    已编辑:好的。我为此花了半天时间。很抱歉告诉您这一点,但您必须更改数组的定义。而不是叶节点的空数组,而是使用具有任何值的非数组值......像这样:

    $ar=array("50" => array ( "70" => array ( "0" => array("35" => "leaf"),"3"=>"leaf" ) ) );
    

    然后使用这个:

    function MakeTree($array){
        $return="";
    
            if(!is_array($array)) return;
            while($member=current($array)){     
    
                    $return.="<li>".key($array);
                    $return.="<ul>".MakeTree($member)."</ul></li>";
    
                next($array);           
             }       
            return $return;
        }
    
        $ar=array("50" => array ( "70" => array ( "0" => array("35" => "leaf"),"3"=>"leaf" ) ) );
        echo(MakeTree($ar));
    

    我不知道为什么,但是如果叶节点有 null 或空数组值,它不会被 next($array) 访问。即使是空字符串,所以 "35"=>"" 也不起作用。

    如果不使用next()和current()就不能使用key(),所以结构的改变是不可避免的。

    【讨论】:

    • 那里有一些奇怪的构造数组。无论如何,我编辑了我的答案。有用吗?
    • 这很好,你肯定需要一个递归函数。
    • 不,它不起作用..我认为问题出在“$return”中。每次函数调用(递归)时,它都会被初始化为 null...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-27
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多