递归整理分类

 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     }

 

posted @ 2018-12-11 16:30  清清沁沁  阅读(319)  评论(0)    收藏  举报