• 递归 无限极分类


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

    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得等级来判断以此将数据的层级显示出来

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

  • 相关阅读:
    mysql执行顺序及习题
    多表查询
    PyQt5-03-信号与槽
    PyQt5-01-安装及简单例子
    252.anaconda升级版本
    251.anaconda下载资源包慢
    250.anaconda+vscode
    61.基础语法-函数式编程
    60.基础语法-异常的处理
    59.语法基础-包
  • 原文地址:https://www.cnblogs.com/mzli/p/5968725.html
Copyright © 2020-2023  润新知