(修改递归错误)PHP 在无限级分类情况下,通过接口取出所有分类之后生成分类树

这篇博客探讨了在PHP中如何处理通过接口获取的无限级分类部门数据,将其转化为三维数组并使用递归方法生成低复杂度的分类树。尽管当前方法降低了复杂度,博主仍期待更优解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

应用场景:

通过web接口获取到无限分类部门的数据,部门数据解析出来的格式为一个二维数组。由于是自己临时写了一个简易的小框架,未加入缓存机制,因此只能一下把部门全部展示到页面上,可递归实现,但复杂度太高。 


解决方法:

前提还是使用递归方法进行操作,只不过对通过接口获取的数据生成一个新的三维数组,然后进行递归操作,复杂度比较低。(若有大神有更加简单的方法,请解答,拜谢。)


实现方法:

1、处理通过接口获取到的数据。

/*
 * 将拉取到的部门数据处理成三维数组
 * @param $dept array json解析出来的数组
 * @return array
 * */
function dept_enarray($dept = array()){
    $dept_array = array();
    foreach($dept as $key => $val){
        if($val['parentno']){
            $dept_array[$val['parentno']][0][] = $val;
        }else{
            $dept_array[0][] = $val;
        }
    }
    return $dept_array;
}

2、对处理得到的三维数组进行递归操作,然后生成html。

/*
 * 构建组织部门树
 * @param $orgdept array dept_enarray函数处理过的数组
 * @param $html    string html标签内容
 * @param $lv      int    当前的操作等级
 * @param $parentarr array 拥有子部门的部门编码
 * @param $orgarr  array   原始传入的数组
 * return string html
 * */
function get_depttree($orgdept,$html = '',$lv=1, $parentarr = '', $orgarr = ''){
    $vl = $lv;
    if(!$orgarr)
        $orgarr = $orgdept;
    if(!$parentarr 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值