递归 无限极分类

本文介绍了两种递归无限极分类的方法:一种是通过等级,另一种是通过数据结构进行数据循环。这两种方法都能有效地处理多级分类数据,并展示数据的层级结构。

递归无限极分类就是自身调用自身进行循环操作,有两种办法一种是通过等级另一种是通过数据结构进行数据循环

public function roles($data,$pid=0,$levae=0)
    {

    //$data为自己查询出来的数组$pid=0表示父级id$leave表示等级

    //进行if判断,判断数据类型
        if(!is_object($data) && !is_array($data))
        {
            return [];
        }

    //将数据转换成数组
        $d=json_decode(json_encode($data),true);

        $array=array();

    //将数据进行foreach循环
        foreach ($d as $key=> $value)
        {

    //判断等级为0的作为父级
            if($value['p_id']==$pid)
            {

     //在数组中添加一个字段作为等级当数据进行前台遍历是作为判断依据,在通过数据结构的方法中这个字段可以不用添加
                $value['levae']=$levae;

      //将数据放到数组中
                $array[$key]=$value;

      //调用本身将数据进行接收
                $array[$key]['son']=$this->roles($d,$value['id'],$levae+1);
            }
        }

    //return 返回数组
        return $array;
    }

第二种方式

//将数据转换为数组

$data=json_decode(json_encode($data),true);

public function getRoles($data,$pid=0,$levae=0)
    {

        static $array=array();
        foreach ($data as $key=> $value)
        {
            if($value['p_id']==$pid)
            {
                $value['levae']=$levae;
                $array[]=$value;
                $this->roles($d,$value['id'],$levae+1);
            }
        }
        return $array;
    }

第二种方式 通第一种方法相似但是第二种是通过$levae得等级来判断以此将数据的层级显示出来

个人拙见希望对大家有帮助

转载于:https://www.cnblogs.com/mzli/p/5968725.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值