zoukankan      html  css  js  c++  java
  • 递归 无限极分类

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

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

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

  • 相关阅读:
    第一周软件测试
    第八周
    第七
    安卓第六周作业
    安卓第五周
    第四周作业
    Jsp第十次作业
    Jsp第九次作业(带验证码的email)
    Jsp第八次作业
    Jsp第七次作业email
  • 原文地址:https://www.cnblogs.com/mzli/p/5968725.html
Copyright © 2011-2022 走看看