PHPTree―phop 빠 른 무한 분류 생 성
5021 단어 php 무한 등급 분류PHPTree
git 주소:https://git.oschina.net/jiusem/PHPTree.git
우리
가장 간단 한 예:
<?php
require('PHPTree.class.php');
// ,
$data = array(
array(
'id'=>1,
'name'=>'book',
'parent_id'=>0
),
array(
'id'=>2,
'name'=>'music',
'parent_id'=>0
),
array(
'id'=>3,
'name'=>'book1',
'parent_id'=>1
),
array(
'id'=>4,
'name'=>'book2',
'parent_id'=>3
)
);
$r = PHPTree::makeTree($data);
echo json_encode($r);
?>
출력:[
{
"id": 1,
"name": "book",
"parent_id": 0,
"expanded":false,//하위 노드 를 펼 치지 않 음
"children": [
{
"id": 3,
"name": "book1",
"parent_id": 1,
"expanded": false,
"children": [
{
"id": 4,
"name": "book2",
"parent_id": 3,
"leaf": true
}
]
}
]
},
{
"id": 2,
"name": "music",
"parent_id": 0,
"leaf": true
}
]
생 성 된 데 이 터 는 트 리 구조 로 ExtJS 등 전단 프레임 과 결합 하여 사용 할 수 있 습 니 다.git 에 ExtJS 데모 가 포함 되 어 있 으 니 참고 하 시기 바 랍 니 다.
프레젠테이션:
전단 프레임 을 사용 하지 않 고 HTML 로 출력 할 경우 다음 방법 을 사용 할 수 있 습 니 다.
$r = PHPTree::makeTreeForHtml($data);
1 차원 배열 을 얻 고 level 필드 로 분류 하 는 차원 을 표시 합 니 다.
array(
array(
'id'=>1,
'name'=>' ',
'parent_id'=>0,
'level'=>0 //
),
array(
'id'=>1,
'name'=>' ',
'parent_id'=>1,
'level'=>1 //
)
....
);
select 탭 으로 출력:
echo '<h1>PHPTree </h1>';
echo '<select style="width:300px;">';
foreach($r as $item){
echo '<option>';
//
echo str_repeat('......',$item['level']);
echo $item['name'];
echo '</option>';
}
echo '</select>';
프레젠테이션:git 에 HTML 을 출력 하 는 demo 가 포함 되 어 있 습 니 다.참고 하 실 수 있 습 니 다.
데이터베이스 디자인 에 대해 서 는 id 와 parent 만 포함 하도록 보증 해 야 합 니 다.id 필드 면 됩 니 다.다른 필드 는 자체 적 으로 추가 할 수 있 으 며 데이터 생 성 에 영향 을 주지 않 습 니 다.parent_id 는 부모 ID 이 며,1 급 분류 라면 0 으로 설정 합 니 다.물론 필드 도 설정 할 수 있 습 니 다.계속 내 려 다 보 세 요.제 가 진급 하 는 사용 방법 을 소개 하 겠 습 니 다.
하위 노드 펼 치기:
PHPTree::makeTree( $data, array(
'expanded' => true
));
출력 한 데 이 터 는:[
{
id:1,
name:'book1',
expanded:true,//전개 서브 노드
children:[
...
]
}
]
홈 키 와 부모 키 사용자 정의:
//
$data = array(
array(
'order_id'=>1, //
'name'=>'book1',
'pid'=>0, //
...
)
);
PHPTree::makeTree( $data, array(
'primary_key' => 'order_id',
'parent_key' => 'pid'
));
출력 한 데 이 터 는:[
{
order_id:1,
name:'book1',
pid:0,
...
}
]
MakeTreeForHtml 방법 도 홈 키 와 부모 키 를 설정 하 는 것 을 지원 합 니 다.
다른 필드 도 사용자 정의 할 수 있 지만 다음 매개 변 수 는 MakeTree 방법 만 지원 합 니 다.
$r = PHPTree::makeTree($data, array(
'expanded_key' => 'expanded',
'children_key' => 'children',
'leaf_key' => 'leaf'
));
기본적으로 이 필드 의 설정 은 ExtJS 를 참고 로 합 니 다.ztree 프레임 워 크 를 사용 하면 이 필드 들 을 다시 설정 해 야 합 니 다.ztree 는 강력 한 국산 트 리 프레임 워 크 로 간단 한 JSON 형식 도 지원 하 며 1 차원 데이터 형식 으로 실제 적 으로 PHPTree 를 사용 할 필요 가 없다.물론 PHPTree 가 출력 한 데이터 의 차원 감 이 뚜렷 하고 ztree 도 지원 합 니 다.