• 递归 无限极分类


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

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

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

  • 相关阅读:
    百练 1936 ll in All 解题报告
    百练 2804 词典 解题报告
    POJ 1226 Substrings 解题报告
    百练 2797 最短前缀 解题报告
    百练 2743 字符串判等 解题报告
    java创建线程的两种方式
    使用.Net Remoting传送Image对象
    Links [IronPython Workflow WCF]
    Hello World!
    Links [ .Net 3.0 Atlas ]
  • 原文地址:https://www.cnblogs.com/mzli/p/5968725.html
Copyright © 2020-2023  润新知