PHP高手来呀~~~请教树形递归一个小问题!
发布网友
发布时间:2023-11-25 15:20
我来回答
共4个回答
热心网友
时间:2024-11-15 23:08
gettree函数只是找到pid下直接的子节点,要找所有子节点,那就每找到一个子节点的时候,就要顺便找找该子节点下面的子节点。这时候就用了递归。
热心网友
时间:2024-11-15 23:09
干嘛要递归呢,每条数据都加一个字段 “path” ,根目录下的类别path就是0-或者0,或者0@(这连接符随便),然后子类的path值就是父类的path+id+"-",如ID为1的数据 path=“0-”,id为2的数据path=“0-1-”,因为它pid是1,然后查询的时候只需要用一条语句就能查出来,排序就按order by concat(‘path’,'id'),显示的数据就是一个菜单树
热心网友
时间:2024-11-15 23:09
呵呵 递归麻烦就是这点,一旦数据层次多了就有问题,你最好是在数据中自己添加一个path数据,这样就好查询了
热心网友
时间:2024-11-15 23:10
赋值其实也就是进行归类,把同父级的子级归类到数组中,你打印出来就知道
Array ( [0] => Array ( [id] => 1 [pid] => Array ( [0] => Array ( [id] => 2 [pid] => [name] => 菜单1-1 ) [1] => Array ( [id] => 3 [pid] => [name] => 菜单1-2 ) ) [name] => 菜单1 ) [1] => Array ( [id] => 4 [pid] => Array ( [0] => Array ( [id] => 5 [pid] => Array ( [0] => Array ( [id] => 6 [pid] => [name] => 菜单2-1-1 ) [1] => Array ( [id] => 7 [pid] => [name] => 菜单2-1-2 ) ) [name] => 菜单2-1 ) [1] => Array ( [id] => 8 [pid] => Array ( [0] => Array ( [id] => 9 [pid] => [name] => 菜单2-2-1 ) ) [name] => 菜单2-2 ) ) [name] => 菜单2 ) )