php制作行政区划数据表

在我们的开发过程中,很多时候都会用到城市联动的一些信息,网上的一些数据表有些又过于陈旧数据并不是很准确。

所以通过一些api来获取城市信息并处理父子级来保存然后定期进行更新 这样既使用方便也能保证数据的准确性

那怎样处理呢

首先我们要找一个合适的api

在多方的比较下最终我们选择了高德地图的行政区划api
链接 :https://lbs.amap.com/api/webservice/guide/api/district
其数据结构如下:
在这里插入图片描述
准备工作:
高德地图web服务API类型key

开始代码:
//首先封装一个curl方法:

 public function curl($url, $decode = true)
    {
        $ch = curl_init();
        $timeout = 5;
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_ENCODING, "gzip");
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
        $result = curl_exec($ch);
        curl_close($ch);

        $result = json_decode($result, true);
       // $result = ($result== null)? false: $result;
        $data = $result['districts'][0]['districts'];
        return $data;
    }

//然后请求 并对返回数据进行处理:

这里我们使用了一个汉字转拼音的包对城市名称进行转换

链接地址:https://blog.csdn.net/qq_35164557/article/details/84989859

   $key = "你的key";
   $url = "https://restapi.amap.com/v3/config/district?keywords=中国&subdistrict=3&key=" . $key;

        $data = $this->curl($url);
        $pinyin =  new Pinyin('Overtrue\Pinyin\MemoryFileDictLoader');
        //遍历数组进行组合
        $res = [];
        foreach ($data as $k => $v) {
            $res[] = [
                'adcode' => $v['adcode'],
                'name' => $v['name'],
                'first_letters' => strtoupper($pinyin->abbr(mb_substr($v['name'], 0, 1))),//strtoupper(小写转大写),mb_substr(字符串截取)
                'p_adcode' => 0,
                'p_name' => '中国'
            ];

            foreach ($v['districts'] as $n => $m) {
                $res[] = [
                    'adcode' => $m['adcode'],
                    'name' => $m['name'],
                    'first_letters' => strtoupper($pinyin->abbr(mb_substr($m['name'], 0, 1))),
                    'p_adcode' => $v['adcode'],
                    'p_name' => $v['name']
                ];

                foreach ($m['districts'] as $a => $b) {
                    $res[] = [
                        'adcode' => $b['adcode'],
                        'name' => $b['name'],
                        'first_letters' => strtoupper($pinyin->abbr(mb_substr($b['name'], 0, 1))),
                        'p_adcode' => $m['adcode'],
                        'p_name' => $m['name']
                    ];
                }
            }
        }

var_dump($res);

在这里插入图片描述
在这里插入图片描述
这里我们已经我们拿到了省市县的名称并且也处理了他们的父子级关系以及首字母等

接下来就是保存了, 当然保存的形式有很多 ,例如存数据库 、存文件、都是可行的方法只要我们定期更新我们的数据 就可以保证了我们数据的准确性方便使用

非特殊说明,本博所有文章均为博主原创。

如若转载,无需和我联系,但请注明出处:https://www.yangpanyao.com/archives/57.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值