数据库中有个area地区表,含有如下字段:
id | area_name(地区名称) | pid(父id) | level(层级) |
---|---|---|---|
1 | 安徽省 | 0 | 1 |
2 | 江苏省 | 0 | 1 |
3 | 江西省 | 0 | 1 |
4 | 合肥市 | 1 | 2 |
5 | 南昌市 | 3 | 2 |
6 | 九江市 | 3 | 2 |
7 | 肥东县 | 4 | 3 |
8 | 桃园镇 | 7 | 4 |
9 | 八斗乡 | 8 | 5 |
10 | 长丰县 | 4 | 3 |
使用thinkphp框架,写了一个根据给定的地区id,读取出该地区下面的所有的地区信息函数。
//$id为地区id
function getChildArea($id){
if(!$id){
return;
}
static $area;
$area = $area ?? new \app\common\model\Area;
$result = collection($area->where(['pid'=>$id])->order('id desc')->select())->toArray();
static $res = [];
if($result){
foreach ($result as $key=>$val) {
$res[] = $val;
getChildArea($val['id']);
}
}
return $res;
}
getChildArea(1);
得到的结果:
0:[id:1,area_name:'安徽省',pid:0,level:1],
1:[id:4,area_name:'合肥市',pid:1,level:2],
2:[id:7,area_name:'肥东县',pid:4,level:3],
3:[id:8,area_name:'桃园镇',pid:7,level:4],
4:[id:9,area_name:'八斗乡',pid:8,level:5],
5:[id:10,area_name:'长丰县',pid:4,level:3]
但是这个函数,返回出来的是一个一维数组,我想得到的是一个多维数组(最上面就一个安徽省,然后这个数组中包含市一级的信息,市一级的数组中再包含县一级的数组,以此类推)
求帮助
你可以根据你的需求对这个方法进行改动用这个方法转一下