一个无限极分类问题
一个无限极分类问题:不知道怎么生成树状图!
刚学php不久,搞了半天也没弄出来!
有没有大虾能帮个忙,把下面的代码修改下,让它直接生成树状图!
<?php
header('content-type:text/html; charset=utf-8');
$ar = array(
array('id'=>1,'parent_id'=>0,'sort_name' => 'A'),
array('id'=>2,'parent_id'=>0,'sort_name' => 'B'),
array('id'=>3,'parent_id'=>0,'sort_name' => 'C'),
array('id'=>4,'parent_id'=>6,'sort_name' => 'D'),
array('id'=>5,'parent_id'=>4,'sort_name' => 'E'),
array('id'=>6,'parent_id'=>3,'sort_name' => 'F')
);
$rangeclass = getChilds(0, $ar);
echo "<pre>";
print_r(getTreeArr(0, $rangeclass));
echo "</pre>";
function getChilds($parent_id, $cats){
$rangeCats = array();
$tmpArr = $cats;
$record = count($tmpArr);
$s = 0;
$t = 0;
while(true){
$find = false;
foreach($tmpArr as $key => $val){
if($val["parent_id"] == $parent_id){
$rangeCats[$s]["parent_id"] = $parent_id;
$rangeCats[$s]["id"] = $val["id"];
$rangeCats[$s]["sort_name"] = $val["sort_name"];
$s++;
$parent_id = $val["id"];
unset($tmpArr[$key]);
$find = true;
break;
}
}
if($find == false){
reset($tmpArr);
$t = $s - 1;
$find2 = false;
while($t >= 0){
foreach($tmpArr as $key2 => $val2){
if($val2["parent_id"] == $rangeCats[$t]["parent_id"]){
$parent_id = $val2["parent_id"];
$find2 = true;
break;
}
}
if($find2 == true){
break;
}
$t--;
}
if($find2 == false){
break;
}
}
if($s == $record){
break;
}
}
return $rangeCats;
}
function getTreeArr($parent_id, $cats){
$tmpArr = array();
$indexArr = array();
foreach($cats as $k => $v){
$v["child"] = array();
if($v["parent_id"] == $parent_id){
$i = count($tmpArr);
$tmpArr[$i] = $v;
$indexArr[$v["id"]] =& $tmpArr[$i];
}else{
$i = count($indexArr[$v["parent_id"]]["child"]);
$indexArr[$v["parent_id"]]["child"][$i] = $v;
$indexArr[$v["id"]] =& $indexArr[$v["parent_id"]]["child"][$i];
}
}
return $tmpArr;
} ;