方法一:用递归法
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<?php
function subtree($arr,$parent){
static $subs=array();
foreach($arr as $v){
if($v['id']==$parent){
subtree($arr,$v['parent']);
$subs[]=$v;
}
}
return $subs;
}
$arr=array(
array('id'=>1,'name'=>'安徽','parent'=>0),
array('id'=>2,'name'=>'海淀','parent'=>7),
array('id'=>3,'name'=>'溪县','parent'=>5),
array('id'=>4,'name'=>'昌平','parent'=>7),
array('id'=>5,'name'=>'淮北','parent'=>1),
array('id'=>6,'name'=>'朝阳','parent'=>7),
array('id'=>7,'name'=>'北京','parent'=>0),
array('id'=>8,'name'=>'上地','parent'=>2),
);
$tree=subtree($arr,2);
foreach($tree as $v){
echo $v['name'],'<br/>';
}
方法二:用迭代法
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<?php
$arr=array(
array('id'=>1,'name'=>'安徽','parent'=>0),
array('id'=>2,'name'=>'海淀','parent'=>7),
array('id'=>3,'name'=>'溪县','parent'=>5),
array('id'=>4,'name'=>'昌平','parent'=>7),
array('id'=>5,'name'=>'淮北','parent'=>1),
array('id'=>6,'name'=>'朝阳','parent'=>7),
array('id'=>7,'name'=>'北京','parent'=>0),
array('id'=>8,'name'=>'上地','parent'=>2),
);
function familytree($arr,$id){
$tree=array();
while($id!==0){
foreach($arr as $v){
if($v['id']==$id){
$tree[]=$v;
$id=$v['parent'];
}
}
}
return $tree;
}
print_r(familytree($arr,8)) ;
迭代效率高,推荐用迭代法!!!