无限极分类之查找家谱树

来源:互联网 发布:单片机连接马达 编辑:程序博客网 时间:2024/05/06 13:22

方法一:用递归法

<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/><?phpfunction 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)) ; 迭代效率高,推荐用迭代法!!!


原创粉丝点击