php无限级分类解决方案
网站导行,产品分类,分销等级,等有上下级关系的数据构建,让查询到的数据以数组的方式,父级包含子级,子级包含子子级,
无论多少个等级,都可以包含
例:
组构图
代码织构
数据表结构
字段:id,name,pid,level
id //当前id
name //名称
pid //当前父级id
level //等级(最高等级为1,父级等级是1,则子级等级是2,以此类推)
查询当前表,key值为字段id的值,然后进行循环判断处理即可
$nav = Db::name('nav')->order('sort asc')->column('id,pid,name,level','id'); $nav = $this->tree($nav); dump($nav);
创建无限级分类方法
//无限级分类 public function tree($arr) { //最大等级 $maxLevel = 1; foreach($arr as $k=>$v){ if($v['level']>$maxLevel){ $maxLevel = $v['level']; } } //当只有一个等级时 if($maxLevel == 1){return $arr;} //子类归类 for($i=$maxLevel;$i>1;$i--){ foreach($arr as $key=>$val){ if($val['level'] == $i){ if(isset($arr[$val['pid']])){ $arr[$val['pid']]['child'][] = $val; } unset($arr[$key]); } } } return $arr; }