直接上代碼,只是保存數據,所以實現功能即可,代碼有點亂
1 $key = 'xxxxx';//自己去高德申請即可 2 $url = 'https://restapi.amap.com/v3/config/district?subdistrict=3&key='.$key; 3 $res = file_get_contents($url); 4
5 $res = json_decode($res,true);//轉換數組
6
7 $str = 'insert into fa_area values';//插入數據庫 8 // $data = [];
9 foreach ($res['districts'] as $v) { 10 //循環一次
11 $str .= "(null,".$v['adcode'].",'".$v['name']."',0,0), "; 12 foreach ($v['districts'] as $vv) { 13 //循環34次
14 $str .= "(null,".$vv['adcode'].",'".$vv['name']."',1,".$v['adcode']."), "; 15 foreach ($vv['districts'] as $vvv) { 16
17 $str .= "(null,".$vvv['adcode'].",'".$vvv['name']."',2,".$vv['adcode']."), "; 18 //循環市 19 // $temp_3[$vvv['adcode']] = []; 20 // $temp_4 = [];
21 foreach ($vvv['districts'] as $kkkk=>$vvvv) { 22 //循環區縣 23 // $temp_4[$vvvv['adcode']] = $vvvv['name'];
24 $code = $vvvv['adcode']; 25 $str .= "(null,$code,'".$vvvv['name']."',3,".$vvv['adcode']."), "; 26 } 27 // ksort($temp_4); 28 // $temp_3[$vvv['adcode']][] = $temp_4;
29 } 30 // ksort($temp_3); 31 // $data[] = $temp_3;
32 } 33 } 34 $str = rtrim($str, ', ');//刪除最后一個空格 35 // echo $str;
36 Db::name('area')->query($str); 37 die; 38 // file_put_contents('area.txt',json_encode($data));//寫入文件
這是fa_area表結構
1 CREATE TABLE `fa_area` ( 2 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
3 `code` int(10) NOT NULL,
4 `name` varchar(50) NOT NULL,
5 `level` tinyint(1) unsigned NOT NULL COMMENT '層級0-3',
6 `pid` int(10) unsigned DEFAULT NULL COMMENT '上級code',
7 PRIMARY KEY (`id`) 8 ) ENGINE=InnoDB AUTO_INCREMENT=3725 DEFAULT CHARSET=utf8mb4 COMMENT='省市區';
這里需要注意的地方,就是有些市下面直接就是鄉鎮了,比如河南省濟源市,所以需要注意這種數據的處理,切勿直接將adcode當做id,否則會重復