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

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

小云云
小云云원래의
2018-02-12 13:17:051910검색

이 기사에서는 주로 무한 분류 트리 구조를 만드는 간단한 방법을 제공합니다. 편집자님이 꽤 좋다고 생각하셔서 지금 공유하고 모두에게 참고용으로 드리고자 합니다. 편집자를 따라가서 모두에게 도움이 되기를 바랍니다.

먼저 렌더링

최상위 분류는 실제로는 1차 분류이고, 2차 분류는 1차 분류의 하위 분류라고도 합니다. -카테고리는 하위 카테고리를 가질 수도 있으므로 인피니투스 분류를 형성합니다.

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

1. 모든 분류 정보를 쿼리하기 위해 컨트롤러의 필드별로 쿼리합니다(id: 카테고리의 ID 값, cate_name: 카테고리 이름, pid: 상위 ID, sorts: 제목 순서 표시를 준비하려면 작성할 필요가 없습니다. )

public function cate_display()
  {
    $cate = D('Cate'); 
    $field = array('id','cate_name','pid','sorts');
    $list = $cate->allCategory($field);
    $this->assign('list',$list);
    $this->display();
  }

2. 모델에 코드

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

1. 분류 트리 생성 방법:

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

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

public function tree($data,$pid=0,$level=0){
    static $tree = array();
    foreach($data as $k=>$v){
      if($v['pid'] == $pid){
        $v['level'] = $level;
        $tree[]=$v;
        $this->tree($data,$v['id'],$level+1);
      }
    }
  
    return $tree;
  }

Three , 뷰 파일의 코드

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

이로써 무한 재귀가 가능한 분류 트리 구조가 완성되었습니다. 요약: 핵심 아이디어는 여전히 모델 내 재귀 함수입니다. pid가 먼저 전달되고 기본값은 0이며 각 재귀에 전달됩니다. pid는 상위의 ID이고 level은 재귀 수준 수를 기록하는 데 사용됩니다. 내장 함수 str_repeat()를 호출하면 '-'를 반복적으로 출력하여 출력 시 레벨 구분 효과를 얻을 수 있습니다.

관련 권장 사항:

php는 재귀 없이 Infinitus 분류 트리를 구현합니다

분류 트리를 생성하기 위한 Infinitus 분류 구현 방법 소개

Infinitus 분류 트리 구조에 대한 간략한 소개

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

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