我想用这个数组构建一棵树.这些是 ID 的操作系统类别和子类别



我正在尝试将平面 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>

基本上,我需要构建一个带有类别子类别子子的树....分类等提前致谢

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

$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));

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

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

最新更新