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);

建议使用第二种

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值