无限极分类这个是不用递归查询的
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;
}