商城笔记9——迭代查找子孙树

版权声明:本文为博主原创文章,未经博主允许不得转载。 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 v a r [ , m i x e d … ] )
unset() 销毁指定的变量。

unset() 在函数中的行为会依赖于想要销毁的变量的类型而有所不同。

如果在函数中 unset() 一个全局变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值。

array_push() 函数向数组尾部插入一个或多个元素。

提示:您可以添加一个或者多个值。

注释:即使您的数组有字符串键名,您所添加的元素将是数字键名(参见下面的实例)。

array_pop() 函数删除数组中的最后一个元素。

语法
array_pop(array)

猜你喜欢

转载自blog.csdn.net/nanajinshengyonggan/article/details/79525441