标签:
$area = 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 parenttree($arr,$id){ $par_arr = array(); //var_dump($id); while($id !== 0){//外层循环的作用:0表示最顶层的栏目 等于0就表示无父栏目/父父栏目 只要不等于0就表示有上级目录 则循环 foreach($arr as $v){//内层循环的作用:遍历数组查找出来$id对应的值 若找到了 该值就是它自身(第一次就是它自己)和父栏目/父父栏目..然后存入数组并终止循环(break) if($v[‘id‘] == $id){ $par_arr[] = $v; $id = $v[‘parent‘]; break; } } } return $par_arr; }
#找子孙栏目#
function subtree($arr,$parent=0){ $task = array($parent);//创建任务表 $subs = array();//存子孙栏目的数组 while(!empty($task))//如果任务表不为空 就表示要做任务 { $flag = false;//默认没找到子树 foreach($arr as $k=>$v){ if($v[‘parent‘] == $parent){ $subs [] = $v; array_push($task,$v[‘id‘]);//借助栈 把新的地区的id压入栈 $parent = $v[‘id‘]; unset($arr[$k]);//把找到的单元unset掉 $flag = true; } } if(!$flag){//表示没找到子树 array_pop($task); $parent = end($task); } /*echo ‘<pre>‘; print_r($task); echo ‘</pre>‘;*/ } return $subs; }
标签:
原文地址:http://www.cnblogs.com/YangJieCheng/p/5693566.html