数据库表
模型
新建一个模型,编写coltree()方法
public function coltree(){
//先根据分类sort值降序排列,再查询结构集
$col = $this->order('sort desc')->select();
//返回并调用sort()方法
return $this->sort($col);
}
在改模型中新建sort()方法
//对查询的结构集进行数组改造,sort(查询的结果集, 默认pid值为0)
public function sort($data, $pid=0){
//定义一个静态数组$arr
static $arr = array();
//使用foreach遍历查询到的结果集
foreach ($data as $key => $value) {
//先对得到的第一条记录对其的pid值进行判断是否归属于id为0的分类
if ($value['pid'] == $pid) {
//对第一个记录赋值给$arr
$arr[] = $value;
//递归调用sort()方法,迭代判断是否有属于这条记录所对应的分类的子分类
$this->sort($data, $value['id']);
}
}
//最后返回改造的数组
return $arr;
}
注:无限分类的递归过程类似于数据结构中树节点的递归遍历每一个结点的过程,且数组改造即将一个数组进行删减排序从而得到我们想要得整理过的数组!