>  기사  >  백엔드 개발  >  CMSPRESS는 무제한 분류(코드 포함)를 실현합니다.

CMSPRESS는 무제한 분류(코드 포함)를 실현합니다.

php中世界最好的语言
php中世界最好的语言원래의
2018-05-17 11:59:111611검색

이번에는 무한 분류를 구현하기 위한 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]);와 결합된 주소로 매개변수 전달 루프 수를 줄여 효율성을 여러 번 향상시킵니다.

하지만 Pid는 ASC로 정렬해야 합니다. 그렇지 않으면 표시가 불완전해집니다

$value['Count'] = $count; 현재 레벨은 템플릿에서 레벨별로 처리됩니다. 트리 구조를 생성합니다

정렬 전과 후의 데이터 구조는 다음과 같습니다

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();
  }

Call in Controller

<td style="
text-indent
:<{$vo[&#39;Count&#39;]*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 중국어 웹사이트의 다른 관련 기사를 주목하세요!

추천 도서:

PHP 지연 정적 바인딩에 대한 자세한 설명

thinkPHP 프레임워크 자동 채우기 원리 및 사용법 자세한 설명

위 내용은 CMSPRESS는 무제한 분류(코드 포함)를 실현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.