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

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

  • 相关阅读:
    存储过程3前台
    最简单Login程序
    存储过程前台2
    程序员 开发工具箱
    存储过程4前台
    存储过程 insert
    公司网络解决方案
    存储过程前台
    linux常用指令
    ReentrantLock源码解析3优先响应中断的lockInterruptibly
  • 原文地址:https://www.cnblogs.com/mzli/p/5968725.html
Copyright © 2011-2022 走看看