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

2628 단어 php무한 분류
선행 효과 도

최고급 분 류 는 바로 1 급 분류 이 고 2 급 분 류 는 1 급 분류의 서브 분류 라 고도 부른다.이 를 바탕 으로 서브 분 류 는 서브 분 류 를 가 질 수 있어 서 무한 한 분 류 를 구성한다.
다음은 구체 적 으로 실 현 된 코드 를 살 펴 보 겠 습 니 다.
1.컨트롤 러 에서 필드 별로 조회 하여 모든 분류 정 보 를 조회 합 니 다(id:이 분류의 ID 값,catename:이 분류의 이름,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],level[층수,표시-수량]두 변 수 를 제어 하고 초기 값 은 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;
  }
3.보기 파일 의 코드

<div class="form-group">
        <label for="pid" class="col-sm-2 control-label no-padding-right">    </label>
        <div 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('-',$val['level']*4); ?>{$val.cate_name}
              </option> 
            </volist> 
          </select>
        </div>
      </div>
이렇게 하면 무한 재 귀 할 수 있 는 분류 트 리 구조 가 완 성 됩 니 다.정리:핵심 사상 또는 모델 중의 재 귀 함수 입 니 다.먼저 pid 기본 값 이 0 이 고 나중에 재 귀 할 때마다 들 어 오 는 pid 는 상급 id 입 니 다.level 은 재 귀 층 수 를 기록 하고 마지막 으로 보기 페이지 에 표시 할 때 PHP 내 장 된 함수 str 을 호출 합 니 다.repeat(),출력 을 반복 하 는 데 사 용 됩 니 다.
위 에서 무한 분류 트 리 구 조 를 만 드 는 간단 한 방법 은 바로 소 편 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.여러분 께 참고 가 되 고 저희 도 많이 사랑 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기