* @param array $arr 要排序的数组
* @param integer $pid 从哪里开始,默认是0,顶级开始
* @param integer $level 表示层级,默认是0,顶级
* @return array 排好序的数组
*/
public function tree($arr,$pid = 0,$level = 0){
$res = array();
foreach ($arr as $v) {
if ($v['parent_id'] == $pid) {
//说明找到,保存起来
//首先,需要将level保存到当前分类中
$v['level'] = $level;
//$res[] = $v;
//继续查找,递归,条件发生变化
$child = $this->tree($arr,$v['cat_id'],$level+1);
//返回的过程中,处理,将找到的后代分类,放入到$res中,合并的方式
$res[] = $v;
$res = array_merge($res,$child);
}
}
//返回结果
return $res;
} //获取指定分类下的所有后代分类的cat_id, 也包括它自己
public function getSubIds($cat_id){
$categorymodel=M("Category");
$allcats = $categorymodel->where("1")->select();
$cats = $this->tree($allcats,$cat_id); //二维数组
$ids = array();
foreach ($cats as $v) {
$ids[] = $v['cat_id'];
}
//将自己也追加到$ids中
$ids[] = $cat_id;
//返回结果
return $ids;
}