夺命雷公狗---无限级分类NO7

<?php
    header("Content-Type:text/html;charset=utf-8");
    $aarr = array(
        array('id'=>1,'name'=>'安徽','pid'=>0),
        array('id'=>2,'name'=>'海淀','pid'=>7),
        array('id'=>3,'name'=>'浣溪县','pid'=>5),
        array('id'=>4,'name'=>'昌平','pid'=>7),
        array('id'=>5,'name'=>'淮北','pid'=>1),
        array('id'=>6,'name'=>'朝阳','pid'=>7),
        array('id'=>7,'name'=>'北京','pid'=>0),
        array('id'=>8,'name'=>'上地','pid'=>2)
    );
    
    function substree($arr,$pid=0){
        $task = array($pid); //任务表
        $tree = array(); //地区表
        
        while(!empty($task)){
            $flag = false;
            
            foreach($arr as $k=>$v){
                if($v['pid'] == $pid){
                    $tree[] = $v;
                    array_push($task,$v['id']);  //把最新地区id入任务栈
                    $pid = $v['id'];
                    unset($arr[$k]);  //把单元unset掉
                    
                    $flag = true;  //说明找到子栏目
                }
            }
            if($flag == false){
                array_pop($task);
                $pid = end($task);
            }
            //print_r($task);
        }
        return $tree;
    }
    echo "<pre>";
    print_r(substree($aarr,0));

 

 

 

 这是使用迭代法找子孙树的方法

posted @ 2015-10-24 23:33  夺命雷公狗  阅读(202)  评论(0编辑  收藏  举报