无限极分类代码
原始数组:
$arr = [
['id'=>1,'name'=>'北京市','pid'=>0],
['id'=>2,'name'=>'内蒙古','pid'=>0],
['id'=>3,'name'=>'朝阳区','pid'=>4],
['id'=>4,'name'=>'北京市','pid'=>1],
['id'=>5,'name'=>'呼和浩特市','pid'=>2],
['id'=>6,'name'=>'新城区','pid'=>5],
];
递归算法:
public function recurTree($arr,$pid){
$tree = [];
foreach ($arr as $k=>$v){
if($v['pid']==$pid){
unset($arr[$k]);
$v['child'] = $this->recurTree($arr,$v['id']);
$tree[] = $v;
}
}
return $tree;
}
数组引用法:
public function referenceTree($arr){
$tree = [];
$indexArr = [];
foreach ($arr as $key=>$val){
$indexArr[$val['id']] = &$arr[$key];
}
foreach ($indexArr as $k=>$v){
echo $v['name'].'<br>';
if($v['pid']==0){
$tree[] = &$indexArr[$k];
}else{
$indexArr[$v['pid']]['child'][] = &$indexArr[$k];
}
}
return $tree;
}

浙公网安备 33010602011771号