1 /**
2 * 递归 整理分类
3 *
4 * @param int $show_deep 显示深度
5 * @param array $class_list 类别内容集合
6 * @param int $deep 深度
7 * @param int $parent_id 父类编号
8 * @param int $i 上次循环编号
9 * @return array $show_class 返回数组形式的查询结果
10 */
11 private function getTreeClassList($show_deep=2,$class_list,$deep=1,$parent_id=0,$i=0){
12 static $show_class = array();//树状的平行数组
13 if(is_array($class_list) && !empty($class_list)) {
14 $size = count($class_list);
15 if($i == 0) $show_class = array();//从0开始时清空数组,防止多次调用后出现重复
16 for ($i;$i < $size;$i++) {//$i为上次循环到的分类编号,避免重新从第一条开始
17 $val = $class_list[$i];
18 $cat_id = $val['cat_id'];
19 $cat_parent_id = $val['parent_id'];
20 if($cat_parent_id == $parent_id) {
21 $val['deep'] = $deep;
22 $show_class[] = $val;
23 if($deep < $show_deep && $deep < 2) {//本次深度小于显示深度时执行,避免取出的数据无用
24 $this->getTreeClassList($show_deep,$class_list,$deep+1,$cat_id,$i+1);
25 }
26 }
27 //if($cat_parent_id > $parent_id) break;//当前分类的父编号大于本次递归的时退出循环
28 }
29 }
30
31 return $show_class;
32 }