首页 > 代码库 > 无限级分类查找--子孙树,家谱树
无限级分类查找--子孙树,家谱树
无限级分类查找
$area=array(
array(‘id‘=>1,‘name‘=>‘北京‘,‘parent‘=>0),
array(‘id‘=>2,‘name‘=>‘昌平‘,‘parent‘=>1),
array(‘id‘=>3,‘name‘=>‘海淀‘,‘parent‘=>2),
array(‘id‘=>4,‘name‘=>‘天津市‘,‘parent‘=>0),
array(‘id‘=>5,‘name‘=>‘市辖区‘,‘parent‘=>4),
array(‘id‘=>6,‘name‘=>‘和平区‘,‘parent‘=>5),
array(‘id‘=>7,‘name‘=>‘河北省‘,‘parent‘=>0),
array(‘id‘=>8,‘name‘=>‘石家庄市‘,‘parent‘=>7),
array(‘id‘=>9,‘name‘=>‘长安区‘,‘parent‘=>8)
);
1:查找子树:找到该节点下的子节点
/** * 找子树,子节点 */function findson($arr,$id=0){ $sons=array(); foreach ($arr as $value) { if ($value[‘parent‘]==$id) { $sons=$value; } } return $sons;}print_r(findson($area,0));
2:查找子孙树:找到该节点下的所有子节点以及子节点下的子节点,无限查找,知道没有子节点为止,这个用递归调用来查找。
/** * 找子孙树 */function subtree($arr,$id,$lev=1){ $subs=array(); foreach ($arr as $value) { if ($value[‘parent‘]==$id) { $value[‘lev‘]=$lev; $subs[]=$value; $subs=array_merge($subs,subtree($arr,$value[id],$lev+1)); } } return $subs;}
3:查找家谱树:找到该节点的所有父节点以及通过父节点继续往上查找,此处的递归调用和上面稍稍有点不同,这里的数组处理方式是通过static关键字来操作。
/** * 家谱树 */function familytree($arr,$id){static $tree=array(); foreach ($arr as $value) { if ($value[‘id‘]==$id) { $tree[]=$value; if ($value[‘parent‘]>0) { familytree($arr,$value[‘parent‘]); } } } return $tree;}
无限级分类查找--子孙树,家谱树
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。