laravel :递归方法(总)

//laravel 框架

//->toArray(); json 转为array形式

//////////控制器中//////////

父级和子集不在同一张数据表

$data = DB::table('父级分类的表名')->get()->toArray(); //一级分类

        foreach($data as $k=>$v){

            $data[$k]->son = DB::table('子集分类的表名')->where(['子集和父级关联的字段'=>$v->id])->get()->toArray(); //二级分类

        }

return view(html存放的文件夹名.文件名',['nav' => 1,'classCat' => $classCat]);

 

 

/*********************html页面*********************/

 @foreach($classCat as $cat)

                    <ul>

                        <li>

                            @foreach($cat->son as $v)

                                @if(empty($v->son))

                                    <a href="{{url('teaching?cat_id='.$cat->id.'&school_id='.$v->id)}}">{{$v->name}}</a>

                                @endif

                            @endforeach

                        </li>

                    </ul>

                    @endforeach

 

 

 

 

/******************************递归******************************/

/**

     * 视图形递归

     * @param $list

     * @param int $pid

     * @param int $level

     * @param string $html

     * @return array

     */

     public static function tree(&$list,$pid=0,$level=0,$html='      '){

        static $tree = array();

        foreach($list as $v){

            if($v['pid'] == $pid){

                $v['sort'] = $level;

                $v['html'] = str_repeat($html,$level);

                $tree[] = $v;

                self::tree($list,$v['id'],$level+1);

            }

        }

        return $tree;

    }

 

//多级递归

  static function findSon($data,$pid){

         $childs = [];

          foreach($data as $v){

             if($v['pid']==$pid){

                 //$arr[] = $v;

                  $childs[] = $v;

             }

          }

          return $childs;

      }

 

 

      static function getSon($data,$pid){

       $childs = self::findSon($data,$pid);

       if(!$childs) return null;

       foreach($childs as $k=>$v){

          $res =  self::getSon($data,$v['id']);

          if($res!='')$childs[$k]['son'] = $res;

       }




/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*****根据pid 实现的无限级分类*****/

/*

*$pid 父级的id

*$result 默认的参数

* $spac 前面的空格数量

*

*/

function getList (pid = 0,&$result = array(),$spac = 0){

         $spac = $spac+4;

        $row =  "select * from 表名 where pid = $pid"; //查询分类

         foreach($row ){

                   $row['字段名'] = str_repeat('&ndsp;').‘|--’.$rew['字段名'],

                   $result[] = $row;

                   getList($row['id'],$result,$spac);

          }

         return  $result;

}

猜你喜欢

转载自blog.csdn.net/qq_39191303/article/details/80565009