之前看过一些无极限分类的,这次自己简单总结一下
数据
第一步,取出来
得到最普通的格式(是无序的)
第二步,进行数组处理(顺序啥的无区别,就是数组的键从0-5变成了1-6)
第二步,开始遍历了
这就完成了
附上代码
//获取分类
public function get_category()
{
//从数据库取出数组
$array = self::where(['require' => 1])->select()->toArray();
//先第一步对数组进行排序,不能直接第二步
$items = array();
foreach($array as $value){
$items[$value['id']] = $value;
}
//第二步
$tree = array();
//定义索引数组,用于记录节点在目标数组的位置
foreach($items as $key => $value){
//如果pid这个节点存在
if(isset($items[$value['pid']])){
//把当前的$value放到pid节点的son中 注意 这里传递的是引用
$items[$value['pid']]['son'][] = &$items[$key];
}else{
$tree[] = &$items[$key];
}
}
return $tree;
}