一个pid的递归排序

232 篇文章 0 订阅
68 篇文章 0 订阅
    public function getCaches()
    {
        $data = $this->getByOrder('disabled = 0', [], 'id, pid, name, sort', 'id asc,sort desc');

        $res = $this->build_tree($data);

        dump($res);die;

//        $cache_list = [];
//        if($data) {
//            foreach ($data as $dk => $dv) {
//                if ($dv['pid'] == 0) {
//                    $cache_list[$dv['id']] = $dv;
//                } else {
//                    $cache_list[$dv['pid']]['child_list'][$dv['id']] = $dv;
//                }
//            }
//        }
//
//        return $cache_list;
    }

    function findChild(&$arr,$id){
        $childs=array();
        foreach ($arr as $k => $v){
            if($v['pid'] == $id){
                $childs[$v['id']]=$v; //使用id作为键
            }
        }
        return $childs;
    }

    function build_tree($rows,$root_id = 0){
        $childs = $this->findChild($rows,$root_id);
        if(empty($childs)){
            return null;
        }
        foreach ($childs as $k => $v){
            $rescurTree= $this->build_tree($rows,$v['id']);
            if( null != $rescurTree){
                $childs[$k]['child_list'] = $rescurTree;
            }
        }
        return $childs;
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值