>백엔드 개발 >PHP 튜토리얼 >무한 분류 트리 구조를 만드는 방법

무한 분류 트리 구조를 만드는 방법

巴扎黑
巴扎黑원래의
2017-06-23 14:05:191151검색

먼저 렌더링

최상위 분류는 실제로는 1차 분류이고, 2차 분류는 1차 분류의 하위 분류라고도 합니다. 또한 하위 범주를 가질 수 있으므로 Infinitus 분류가 형성됩니다.

다음으로 구체적인 구현 코드를 살펴보겠습니다.

1. 컨트롤러의 필드별로 쿼리하여 모든 분류 정보를 알아냅니다(id: 카테고리의 ID 값, cate_name: 해당 카테고리의 이름). 카테고리, pid :부모 ID, 정렬: 제목 순서 표시를 준비하지만 작성할 필요는 없습니다. )

1     public function cate_display()2     {3         $cate = D('Cate'); 
4         $field = array('id','cate_name','pid','sorts');5         $list = $cate->allCategory($field);6         $this->assign('list',$list);7         $this->display();8     }

2. 모델에 코드

해당 컨트롤러의 모델에 두 가지 메소드를 생성합니다

1. 모든 분류 정보를 쿼리하고 분류 트리를 생성하는 메서드를 호출합니다.

1 public function allCategory($field='*'){2         $data = $this->field($field)->select();3         return $this->tree($data);4     }

2. 분류 트리를 생성합니다(재귀 사용, 데이터 전달, pid [상위 클래스 ID], level). [레이어 수, 디스플레이 수 제어에 사용] , 초기값은 0)

 1 public function tree($data,$pid=0,$level=0){ 2         static $tree = array(); 3         foreach($data as $k=>$v){ 4             if($v['pid'] == $pid){ 5                 $v['level'] = $level; 6                 $tree[]=$v; 7                 $this->tree($data,$v['id'],$level+1); 8             } 9         }10     11         return $tree;12     }

3. 뷰 파일에 코드

 1 <div class="form-group"> 2                 <label for="pid" class="col-sm-2 control-label no-padding-right">上级菜单</label> 3                 <div class="col-sm-6"> 4                     <select name="pid" style="width: 100%;"> 5                         <option selected="selected" value="0">顶级菜单</option> 6                         <volist name="row" id="val">  
 7                             <option value="{$val.id}"><?php echo str_repeat(&#39;-&#39;,$val[&#39;level&#39;]*4); ?>{$val.cate_name} 8                             </option>  
 9                         </volist>  
10                     </select>11                 </div>12             </div>

이런 식으로 분류 트리 구조를 만들 수 있습니다. 요약: 핵심 아이디어는 여전히 모델의 재귀 함수이며, pid가 먼저 전달되고 기본값은 0입니다. 반복될 때마다 전달되는 pid는 상위 레벨의 ID입니다. 재귀 수준 수를 기록합니다. 마지막으로 보기 페이지가 표시되면 PHP 내장 함수 str_repeat()를 호출하여 '-'를 반복적으로 출력하여 출력 시 다른 수준의 효과를 얻습니다.

위 내용은 무한 분류 트리 구조를 만드는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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