整理省市区数据

本文主要是为了记录备查。

为了开发 Magento 2 checkout 页面省市区三级联动,需要整理出我国的省市区数据。

数据以国家统计局公布的 最新县及县以上行政区划代码(截止2016年7月31日) 为参考。

其他年份的参考国家统计局行政区划代码

总计:一级 34 条记录,二级 365 条,三级 2822 条。

刚开始的思路不对,白浪费了许多时间。

附上转化和校正代码。

// 更好的方法
// 从网站上拷贝后整理成 csv 用 file differ
<?php
header("Content-type: text/html; charset=utf-8");

// 转化
$ofile = fopen('old.csv', 'r');

while (!feof($ofile)) {
    echo json_encode(fgetcsv($ofile), JSON_UNESCAPED_UNICODE);
    echo ',<br/>';
}

// 以公布数据为本,看整理数据中有哪些缺少或不同
// $res = [
//     ['110000', '北京'],
//     ['120000', '天津'],
//     ['130000', '河北省'],
//     // ... 省略
//     ['654326', '吉木乃县'],
// ];

// $ofile   = fopen('old.csv', 'r');
// $zhaodao = false;

// while ($data = fgetcsv($ofile)) {

//     foreach ($res as $key) {
//         if ($data[1] == '市辖区' || $data[1] == '省直辖县级行政区划' || $data[1] == '自治区直辖县级行政区划') {
//             $zhaodao = true;
//             break;
//         }
//         if ($key[0] == $data[0]) {
//             $zhaodao = true;
//             break;
//         }
//     }
//     if (!$zhaodao) {
//         echo $data[0] . $data[1] . '<br/>';
//     }
//     $zhaodao = false;
// }
// fclose($ofile);

// echo '------------------';

// 以整理数据为本,对比统计数据,是否多余
// $ofile   = fopen('old.csv', 'r');
// $zhaodao = false;

// foreach ($res as $key) {

//     while ($data = fgetcsv($ofile)) {
//         if (($key[0] == $data[0]) && ($key[1] == $data[1])) {
//             $zhaodao = true;
//             break;
//         }
//     }
//     if (!$zhaodao) {
//         echo $key[0] . $key[1] . '<br/>';
//     }
//     $zhaodao = false;
//     fseek($ofile, 0);
// }

2 comments

  1. sun

    如果带上geoip自动识别匹配就最好了

    1. Pisces Post author

      感谢你的关注和建议。
      GeoIP 自动识别有更广泛的应用,适合单独一个模块。
      目前的省市区三级联动目标主要是用框架设计的方法,做到让 city 和 address 可以有下拉选项,要兼容没有选项的地区,并且方法要可以通用,可以扩展到其他国家。
      然后是如何做到全局所有 address 的 city 都可以换成选项,最后是兼容性问题。
      想来也是头疼。其中有些细节还没有想清楚。
      所以,关于 GeoIP 要放到之后再考虑。

发表评论

电子邮件地址不会被公开。 必填项已用*标注