无限极分类这个是不用递归查询的

无限极分类这个是不用递归查询的

 public function index(){

        $items = array(
            1 => array('id' => 1, 'sjdl' => 0, 'name' => '安徽省'),
            2 => array('id' => 2, 'sjdl' => 0, 'name' => '浙江省'),
            3 => array('id' => 3, 'sjdl' => 1, 'name' => '合肥市'),
            4 => array('id' => 4, 'sjdl' => 3, 'name' => '长丰县'),
            5 => array('id' => 5, 'sjdl' => 1, 'name' => '安庆市'),
        );

        $item = $this->make_tree($items);

        // 查询是显示耗时
        $starttime = explode(' ',microtime());
        $endtime = explode(' ',microtime());
        $thistime = $endtime[0]+$endtime[1]-($starttime[0]+$starttime[1]);
        $thistime = round($thistime,3);
        echo "本网页执行耗时:".$thistime." 秒。".time();

        dump($item);


    }
    //无限极分类
    /*
     * @ $pk 当前 id
     * @ $pid 父级 id
     * @ $child定义下级开始 的K
     * @ 下级开始坐标
     * */
   public function make_tree($list,$pk='id',$pid='sjdl',$child='_child',$root=0){
        $tree=array();
        $packData=array();
        foreach ($list as  $data) {
            //转换为带有主键id的数组
            $packData[$data[$pk]] = $data; //$packData[1]=$data; $packData[2]=$data
        }
        foreach ($packData as $key =>$val){
            if($val[$pid]==$root){   //代表跟节点
                $tree[]= &$packData[$key];
            }else{
                //找到其父类
                $packData[$val[$pid]][$child][]= &$packData[$key];
            }
        }
        return $tree;
    }

猜你喜欢

转载自blog.csdn.net/wpeishi/article/details/77053735