php怎么计算输出数据表里组织架构图的数组结构

我的数据库表user_tree是这样的,这是一个左右值树,Level代表树深度,Lft是左值,Rgt是右值。

userid name Lft Rgt Level
1001 wang 1 16 1
1002 li 2 7 2
1003 wlm 8 15 2
1005 bander 3 4 3
1008 qipl 5 6 3
1007 buliao 9 12 3
1009 wumao 13 14 3
1013 zhangsan 10 11 4

组织结构图:
组织结构图

用php怎么能实现,任意给一个userid值,就能组织成一个多维数组结构。
例如我输入一个函数aaa(userid=1003),就能返回1003下面所有子孙节点,组织的多维数组。只用一次查询,不能循环去数据库查询,服务器受不住。最多2次查询,就能出现结果。最多返回4层。例如,输入1003。查询到1003,在2层,那么最多查询到6层。

查询1003节点的所有子孙节点是这样的,左右值树参考

SELECT * FROM user_tree WHERE Lft >= 8 AND Lft <= 15 AND Level<=6 ORDER BY Level ASC
array(
    'userid' => '1003',
    'name' => 'wlm',
    'children' => array(
        0 => array(
            'userid' => '1007',
            'name' => 'buliao',
            'children' => array(
                0 => array(
                    'userid' => '1013',
                    'name' => 'zhangsan'
                )
            ) ,
        1 => array(
            'userid' => '1009',
            'name' => 'wumao'
            ) ,
        ) ,
    ) ,
);

想了3天了,搞不出来,所以求助一下这里的前辈。

阅读 2.1k
1 个回答

数据库查出来不可能是多维以上的结果,查出来后你必须按照左右权值计算出tree来,可以在加个字段pid 就简单了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题