전자상거래 사이트 백 스테이지 노트: 무한 분류
데이터 구 조 는 다음 과 같다.
$arr=array(
array('id'=>1,'name'=>' ','parent_id'=>0),
array('id'=>2,'name'=>' ','parent_id'=>1),
array('id'=>3,'name'=>' ','parent_id'=>1),
array('id'=>4,'name'=>' ','parent_id'=>0),
array('id'=>5,'name'=>' ','parent_id'=>2),
array('id'=>6,'name'=>' ','parent_id'=>4),
array('id'=>7,'name'=>' ','parent_id'=>4),
array('id'=>8,'name'=>' ','parent_id'=>5),
array('id'=>9,'name'=>' ','parent_id'=>3));
최종 효 과 는 다음 과 같다.
지금 우 리 는 쉬 운 것 부터 어 려 운 것 까지 먼저 자 결점 을 찾 는 것 을 실현 한다.어떤 결점 과 그 자결 점 의 관계 가 이 결점 에 있 는 id 는 자결 점 의 parent 와 같다id。
주어진 array ('id' = > 1, 'name' = > '호 북', 'parent id' = > 0) 의 하위 노드 는:
array('id'=>2,'name'=>' ','parent_id'=>1)array('id'=>3,'name'=>' ','parent_id'=>1)
이 논리 에 따 르 면 코드 는 다음 과 같 습 니 다.
function sontree($arr,$cat_id){
$son=array();
foreach ($arr as $k => $v) {
if($v['parent_id']==$cat_id){
$son[]=$v;
}
}
return $son;
}
이어서 조상 을 찾 는 결점, A 결점 을 찾 는 parentid 는 B 결점 의 id 와 같 으 면 B 결점 은 A 결점 의 조상 이 고 순서대로 유추 하여 어떤 조상 이 결점 을 맺 을 때 까지 parentid = 0 시 종료.예: A - > B - > C - > D (D 의 parent id = 0) 는 A 결점 의 조상 은 B - > C - > D 이다. 이 논리 에 따 르 면 코드 는 다음 과 같다.
function fathertree34($arr,$id){
$father=array();
while($id>0){
foreach ($arr as $k => $v) {
if($v['cat_id']==$id){
$father[]=$v;
$id=$v['parent_id'];
}
}
}
return $father;
}
마지막 으로 자손 의 결점 을 찾 는 것 을 실현 하 다.앞에서 자 결점 을 찾 는 것 이 실현 되 었 고 자손 결점 은 바로 자 결점 을 바탕 으로 자 결점 을 찾 아 차례대로 유추 하여 자 결점 이 없 을 때 까지 하 는 것 이다.이 논리 에 따 르 면 우 리 는 재 귀 를 이용 하여 실현 할 수 있 습 니 다. 코드 는 다음 과 같 습 니 다.
function sub_tree($arr,$id,$lev=0){
static $sub=array();
foreach ($arr as $k => $v) {
if($v['parent_id']==$id){
$v['lev']=$lev;
$sub[]=$v;
sub_tree($arr,$v['cat_id'],$lev+1);
}
}
return $sub;
}
$v['lev']=$lev;자손 나무 에 맺 힌 깊이 를 기록 하 는 데 쓰 인 다.
자손 결산 점 을 찾 아 도 스 택 을 사용 하여 실현 할 수 있 습 니 다. 코드 는 다음 과 같 습 니 다.
function sub_tree($arr,$id){
$stack=array();
$sub=array();
foreach ($arr as $k => $v) {
if($v['cat_id']==$id){
$stack[]=$v;
}
}
while($stack){
$row=array_pop($stack);
$sub[]=$row;
foreach ($arr as $k => $v) {
if($v['parent_id']==$row['cat_id']){
$stack[]=$v;
}
}
}
return $sub;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
무제 한 분류텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.