//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;
}