이번에는 무한 분류를 구현하기 위한 CMSPRESS를 소개하겠습니다.(코드 포함) CMSPRESS에서 무한 분류를 구현하기 위한 주의사항은 무엇인가요?
Super무한 분류 사용이 간편하고 효율성이 매우 뛰어납니다. 핵심 코드는 10줄 미만입니다.
그리고 이 분류의 단점과 더 효율적이고 간단한 무한 분류 방법을 찾아보고 싶습니다^_^
핵심 코드는 다음과 같습니다
class Tool { static public $treeList = array(); //存放无限分类结果如果一页面有多个无限分类可以使用 Tool::$treeList = array(); 清空 /** * 无限级分类 * @access public * @param Array $data //数据库里获取的结果集 * @param Int $pid * @param Int $count //第几级分类 * @return Array $treeList */ static public function tree(&$data,$pid = 0,$count = 1) { foreach ($data as $key => $value){ if($value['Pid']==$pid){ $value['Count'] = $count; self::$treeList []=$value; unset($data[$key]); self::tree($data,$value['Id'],$count+1); } } return self::$treeList ; } }
$treeList[] Save 정렬 결과는 기본적으로 정렬하고 저장한 후에는 더 이상 사용되지 않으므로 unset($data[$key]);를 사용하면 됩니다. unset($data[$key]);와 결합된 주소로 매개변수 전달 루프 수를 줄여 효율성을 여러 번 향상시킵니다.
정렬 전과 후의 데이터 구조는 다음과 같습니다
table정렬 전 데이터 구조
id pid
1 0
2 0
3 1
4 3
정렬 후 데이터 구조
id pid 개수1 0 1
3 1 2
4 3
2 0 1
//默认列表 public function index() { $menu = M('Menu'); $list = $menu->order('Pid ASC,Morder DESC,Id ASC')->select(); $this->assign('List',Tool::tree($list)); $this->display(); }
<td style=" text-indent :<{$vo['Count']*20}>px;"><neq name="vo.Count" value="1">| -- </neq><{$vo.Name}></td>템플릿 3da5ee660f26a047cce0b9503e43e613에서 사용 일반 출력은 필수 항목을 생성할 수 있습니다. 트리 구조의 필드는 위와 같이 수정됩니다.테스트 후 항목이 3,000개이면 0.5초가 소요됩니다. 1,000개 항목에 대해 약 0.02초가 소요됩니다. 3,000개를 초과하면 효율성이 크게 감소합니다. 2,000개 정도의 효율성은 여전히 상대적으로 높습니다. 더 이상 자세한 테스트는 수행되지 않았습니다. 이 기사의 사례를 읽은 후 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요! 추천 도서:
thinkPHP 프레임워크 자동 채우기 원리 및 사용법 자세한 설명
위 내용은 CMSPRESS는 무제한 분류(코드 포함)를 실현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!