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天了,搞不出来,所以求助一下这里的前辈。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
数据库查出来不可能是多维以上的结果,查出来后你必须按照左右权值计算出tree来,可以在加个字段pid 就简单了