我的数据库表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天了,搞不出来,所以求助一下这里的前辈。