PHP|PHP格式化全国省市区列表

一、代码部分

/** * 获取全国省市区列表(格式化后) */ public function getRegionList() { $data = https://www.it610.com/article/CoreRegion::find()->select(['national_code', 'region_name', 'parent_id', 'region_level'])->asArray()->all(); $data = https://www.it610.com/article/$this->assembleRegionData($data); return $data; }/** * 重组地区数据 */ public function assembleRegionData($data, $pid = 0) { $list = []; foreach ($data as $k => $v) { if ($v['parent_id'] == $pid) { // 继续查找其子市区县 $v['list'] = $this->assembleRegionData($data, $v['national_code']); // 如果子地区为空,则unset掉 if (empty($v['list'])) { unset($v['list']); } $list[] = $v; } } return $list; }


二、效果
PHP|PHP格式化全国省市区列表
文章图片


三、改进代码,将地区列表数据存入缓存(可选)
由于地区列表数据基本是不会变的,所以最好是存入redis等缓存数据库,这里将数据存入redis
代码:
public function getRegionList() { $region_key = 'region_list_key_redis'; $data = https://www.it610.com/Yii::$app->cache->get($region_key); // 如果数据不空,则返回数据 if (isset($data) && !empty($data)) { return $data; } else { // 如果数据为空,则查询之后设置缓存,并返回数据 $data = https://www.it610.com/article/CoreRegion::find()->select(['national_code', 'region_name', 'parent_id'])->asArray()->all(); $data = https://www.it610.com/article/$this->assembleRegionData($data); \Yii::$app->cache->set($region_key, $data); return $data; } }



四、sql 文件附件
https://download.csdn.net/download/m_nanle_xiaobudiu/10904306

【PHP|PHP格式化全国省市区列表】

    推荐阅读