group_class = $this->load_all(); } public function get_info($cid,&$c_1,&$c_2,&$c_3,&$name) { $c_3 =0; $c_1 = 0; $c_2 = 0; $info = $this->group_class[$cid]; if(empty($info)) { return false; } $name = $info['gc_name']; do { $deep = (int)$info['deep']; switch($deep) { case 1: { $c_1 = $cid; $n_1 = $info['gc_name']; break; } case 2: { $c_2 = $cid; $n_2 = $info['gc_name']; break; } case 3: { $c_3 = $cid; $n_3 = $info['gc_name']; break; } } $cid = $info['gc_parent_id']; $info = $this->group_class[$cid]; } while($deep > 0); return true; } private function write_deep(&$alldata,&$childs,$deep) { if(empty($childs)) return; foreach($childs as $cid) { $alldata[$cid]['deep'] = $deep; $childex = &$alldata[$cid]['child']; $this->write_deep($alldata, $childex, $deep + 1); } } /** * 取分类列表,最多为三级 * * @param int $show_deep 显示深度 * @param array $condition 检索条件 * @return array 数组类型的返回结果 */ private function load_all() { $mod_cats = Model('goods_class'); $class_list = $mod_cats->field('*')->order('gc_parent_id asc,gc_sort asc,gc_id asc')->limit(false)->select(); $group_class = array(); foreach($class_list as $val) { $key = (int)$val['gc_id']; if(empty($group_class[$key])) { $group_class[$key] = $val; $group_class[$key]['child'] = array(); } } if(empty($group_class[0])) { $group_class[0] = array(); $group_class[0]['child'] = array(); } foreach($class_list as $val) { $cid = (int)$val['gc_id']; $pcid = (int)$val['gc_parent_id']; if($cid == $pcid) continue; $parent = &$group_class[$pcid]; if (!empty($parent)) { array_push($parent['child'],$cid); } } $this->write_deep($group_class,$group_class[0]['child'],1); return $group_class; } }