我想用这个数组建立一棵树.这些是Id的os类别和子类别 [英] I want to build a tree with this array . These are the Id's os categories and sub categories

查看:107
本文介绍了我想用这个数组建立一棵树.这些是Id的os类别和子类别的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将平坦的mysql行变成树形结构.这是类别和子类别的ID

I am trying to turn flat mysql rows into a tree structure. Here is the id's of the categories and Sub categories

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

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

                            )

                        [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>

基本上,我需要用类别子类别sub sub .. categoreis等构建一棵树. 预先感谢

BAsically i need to build a tree with categories sub categories sub sub .... categoreis etc. Thanks in advance

推荐答案

已确定.我花了半天时间.不好意思告诉您,但是您必须更改数组的定义.代替使用叶节点的空数组,而使用具有任何值的非数组值...像这样:

Edited: OK. I spent half a day on this. I'm sorry to tell you this, but you'll have to change the definition of your array. Instead of an empty array for the leaf nodes, use a non-array value that has any value... Like this:

$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" =>"也不起作用.

I don't know why, but if the leaf node has null or empty array value, it doesn't get accessed by next($array). Even if it is an empty string, so "35"=>"" won't work.

如果不使用next()和current(),则不能使用key(),因此结构的改变是不可避免的.

If you don't use next() and current() you can't use key(), so a change in the structure is inevitable.

这篇关于我想用这个数组建立一棵树.这些是Id的os类别和子类别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆