版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/nanajinshengyonggan/article/details/79525441
迭代查找子孙树
$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 subtree($arr,$parent=0){
$task=array($parent);//任务表
$tree = array();//地区表
while(!empty($task)){
$flag=false;
foreach($arr as $k=>$v){
if($v['parent']==$parent){
$tree[]=$v;
array_push($task,$v['id']);//把最新的地区id压入任务栈
$parent=$v['id'];
unset($arr[$k]);//把找到的单元unset掉
$flag=true;//说明找到了子栏目
}
}
if($flag==false){
array_pop($task);
$parent=end($task);
}
//print_r($task);
}
return $tree;
}
print_r(subtree($area,0));
unset() — 释放给定的变量。
语法
void unset ( mixed
… ] )
unset() 销毁指定的变量。
unset() 在函数中的行为会依赖于想要销毁的变量的类型而有所不同。
如果在函数中 unset() 一个全局变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值。
array_push() 函数向数组尾部插入一个或多个元素。
提示:您可以添加一个或者多个值。
注释:即使您的数组有字符串键名,您所添加的元素将是数字键名(参见下面的实例)。
array_pop() 函数删除数组中的最后一个元素。
语法
array_pop(array)