php根据数据生成省市区类型的树型
代码如下,其实主要涉及到引用,最开始自己写的版本使用引用的地方错误,后来网上找到了别人的代码,仅做记录:
function generateTree($items){
$tree = [];
foreach($items as &$item){
$pid = $item['pid'];
if(isset($items[$pid])){
$items[$pid]['sub'][] = &$item;
}else{
$tree[] = &$item;
}
}
return $tree;
}
$items = [
1 => ['id' => 1, 'pid' => 0, 'name' => '安徽省'],
2 => ['id' => 2, 'pid' => 0, 'name' => '浙江省'],
3 => ['id' => 3, 'pid' => 1, 'name' => '合肥市'],
4 => ['id' => 4, 'pid' => 3, 'name' => '长丰县'],
5 => ['id' => 5, 'pid' => 1, 'name' => '安庆市'],
];
print_r(generateTree($items));