php 两种递归方法
直接上代码
1 //1、tp5写法,一步一步入库查询
2 function get_array($id=0){
3 $result = Db::name('category')->where(['pid'=>$id])->select();
4 $arr = array();
5 if($result){//如果有子类
6 foreach ($result as $val){
7 $val['list'] = get_array($val['id']);
8 $arr[] = $val; //组合数组
9 }
10 }
11 return $arr;
12 }
13 $str = json_encode(get_array(0));
14 echo $str;
15
16 //2、先查库,然后再进行递归查询,不用频繁操作数据库了
17 $result = Db::name('category')
18 ->field('id,value,pid')
19 ->select();
20 dump($result);
21
22 function getTree($data, $pid){
23 $tree = [];
24 foreach($data as $k => $v){
25 if($v['pid'] == $pid){ //父亲找到儿子
26 $v['son'] = getTree($data, $v['id']);//再看看是否还有孙子。。
27 $tree[] = $v;
28 //unset($data[$k]);
29 }
30 }
31 return $tree;
32 }
33 $tree = getTree($result, 0);
34 dump($tree);
35 echo json_encode($tree);
建议使用第二种
多学、
多记、
多练、