php用递归实现无限极分类获取树形结构

 表中的数据如下:

递归的方法: 

/**
 * 用递归获取子类信息
 * $data 所有分类
 * $parent_id 父级id
 * $level 层级
 * $result 分好类的数组
*/
function getChild($data,$parent_id = 0,$level = 0){
    //声明静态数组,避免递归调用时,多次声明导致数组覆盖
    static  $result;
    foreach ($data as $key => $info){
        //第一次遍历,找到父节点为根节点的节点 也就是parent_id=0的节点
        if($info['parent_id'] == $parent_id){
            $info['level'] = $level;
            $result[] = $info;
            //把这个节点从数组中移除,减少后续递归消耗
            unset($data[$key]);
            //开始递归,查找父ID为该节点ID的节点,级别则为原级别+1
            getChild($data,$info['id'],$level+1);
        }
    }
    return $result;
}

得到的结果:

array:4 [▼
  0 => {#220 ▼
    +"id": 1
    +"cate_name": "服装"
    +"parent_id": "0"
    +"sort": 10
    +"create_time": "0000-00-00 00:00:00"
    +"update_time": "0000-00-00 00:00:00"
    +"level": 0
  }
  1 => {#223 ▼
    +"id": 3
    +"cate_name": "女装"
    +"parent_id": "1"
    +"sort": 10
    +"create_time": "0000-00-00 00:00:00"
    +"update_time": "0000-00-00 00:00:00"
    +"level": 1
  }
  2 => {#224 ▼
    +"id": 4
    +"cate_name": "连衣裙"
    +"parent_id": "3"
    +"sort": 10
    +"create_time": "0000-00-00 00:00:00"
    +"update_time": "0000-00-00 00:00:00"
    +"level": 2
  }
  3 => {#222 ▼
    +"id": 2
    +"cate_name": "电子"
    +"parent_id": "0"
    +"sort": 10
    +"create_time": "0000-00-00 00:00:00"
    +"update_time": "0000-00-00 00:00:00"
    +"level": 0
  }
]

用这个结果直接循环就可以得到自己想要的数据了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值