php生成行政区域选择json数据

下面是PHP获取mysql行政区划数据后生成json数据的方法。这个已经在元问答pwa这里应用了,大家可以去看看。

public function xzqy(){/*这个是生成json*/
if(!$con=S('Xzqy')->select(['id','name','pid', 'lng', 'Lat','LevelType'],['ORDER'=>'id ASC'])) return $this->message(fy('回答不存在'),500,'/');
$j=[];
$j1=[];
$j2=[];
$j3=[];
foreach($con as $arr){
if($arr['LevelType']==0){
$j[$arr['id']]['text']=$arr['name'];
$j[$arr['id']]['value']=round($arr['Lat'],3).','.round($arr['lng'],3);
}

if($arr['LevelType']==1){
$j1[$arr['pid']][$arr['id']]['text']=$arr['name'];
$j1[$arr['pid']][$arr['id']]['value']=round($arr['Lat'],4).','.round($arr['lng'],4);
}

if($arr['LevelType']==2){
$j2[$arr['pid']][$arr['id']]['text']=$arr['name'];
$j2[$arr['pid']][$arr['id']]['value']=round($arr['Lat'],5).','.round($arr['lng'],5);
}
if($arr['LevelType']==3){
$j3[$arr['pid']][$arr['id']]['text']=$arr['name'];
$j3[$arr['pid']][$arr['id']]['value']=round($arr['Lat'],6).','.round($arr['lng'],6);
}

}/*数据加入*/
/**/

/**/
foreach ($j as $k => $v) {
    echo '{text:\'', $v['text'], '\',value:\'', $v['value'], '\'';
    if (isset($j1[$k])) {
        echo ',children:[';
        foreach ($j1[$k] as $k1 => $v1) {
            echo '{text:\'', $v1['text'], '\',value:\'' . $v1['value'], '\'';
            if (isset($j2[$k1])) {
                echo ',children:[';
                foreach ($j2[$k1] as $k2 => $v2) {
                    echo '{text:\'', $v2['text'], '\',value:\'' . $v2['value'], '\'';
                    if (isset($j3[$k2])) {
                        echo ',children:[';
                        foreach ($j3[$k2] as $v3) {
                            echo '{text:\'', $v3['text'], '\',value:\'' . $v3['value'], '\'},';
                        }
                        echo ']},';
                    } else {
                        echo '},';
                    }
                }
                echo ']},';
            } else {
                echo '},';
            }
        }
        echo ']},';
    } else {
        echo '},';
    }
}
exit;



}

生成的效果还不错!这个思路可以解决很多类似的问题哦!比如多层类目的遍历等等!

 

json数据大概是类似这样的。贴一部分出来吧: 看看就知道这个json是不是你们想要的,文件637kb,很齐全,连台湾香港都有: { "adcode": 110000, "level": "province", "center": [116.405285, 39.904989], "name": "北京市", "children": [{ "adcode": 110101, "provCode": 110000, "cityCode": 110100, "level": "district", "center": [116.418757, 39.917544], "name": "东城区", "bbox": [220997853, 101649345, 51942, 112202], "acroutes": [100000, 110000] }, { "adcode": 110102, "provCode": 110000, "cityCode": 110100, "level": "district", "center": [116.366794, 39.915309], "name": "西城区", "bbox": [220952804, 101650294, 58693, 101214], "acroutes": [100000, 110000] }, { "adcode": 110105, "provCode": 110000, "cityCode": 110100, "level": "district", "center": [116.486409, 39.921489], "name": "朝阳区", "bbox": [220975258, 101516417, 219305, 292702], "acroutes": [100000, 110000] }, { "adcode": 110106, "provCode": 110000, "cityCode": 110100, "level": "district", "center": [116.286968, 39.863642], "name": "丰台区", "bbox": [220754331, 101724157, 308078, 130557], "acroutes": [100000, 110000] }, { "adcode": 110107, "provCode": 110000, "cityCode": 110100, "level": "district", "center": [116.195445, 39.914601], "name": "石景山区", "bbox": [220797151, 101630263, 109699, 116407], "acroutes": [100000, 110000] }, { "adcode": 110108, "provCode": 110000, "cityCode": 110100, "level": "district", "center": [116.310316, 39.956074], "name": "海淀区", "bbox": [220749997, 101467201, 258195, 267043], "acroutes": [100000, 110000] }, { "adcode": 110109, "provCode": 110000, "cityCode": 110100, "level": "district", "center": [116.105381, 39.937183], "name": "门头沟区", "bbox": [220283661, 101449889, 560707, 356985], "acroutes": [100000, 110000] }, { "adcode": 110111, "provCode": 110000, "cityCode": 110100, "level": "district", "center": [116.139157, 39.735535], "name": "房山区", "bbox": [220285002, 101696885, 617451, 405299], "acroutes": [100000, 110000] }, { "adcode": 110112, "provCode": 110000, "cityCode": 110100, "level": "district", "center": [116.658603, 39.902486], "name": "通州区", "bbox": [221106523, 101593189, 318276, 425504], "acroutes": [100000, 110000] }, { "adcode": 110113, "provCode": 110000, "cityCode": 110100, "level": "district", "center": [116.653525, 40.128936], "name": "顺义区", "bbox": [221060118, 101320470, 388946, 295564], "acroutes": [100000, 110000] }, { "adcode": 110114, "provCode": 110000, "cityCode": 110100, "level": "district", "center": [116.235906, 40.218085], "name": "昌平区", "bbox": [220597587, 101241042, 493265, 347262], "acroutes": [100000, 110000] }, { "adcode": 110115, "provCode": 110000, "cityCode": 110100, "level": "district", "center": [116.338033, 39.728908], "name": "大兴区", "bbox": [220874650, 101787127, 381087, 377158], "acroutes": [100000, 110000] }, { "adcode": 110116, "provCode": 110000, "cityCode": 110100, "level": "district", "center": [116.637122, 40.324272], "name": "怀柔区", "bbox": [220926825, 100583340, 448138, 812306], "acroutes": [100000, 110000] }, { "adcode": 110117, "provCode": 110000, "cityCode": 110100, "level": "district", "center": [117.112335, 40.144783], "name": "平谷区", "bbox": [221406836, 101255302, 356418, 339689], "acroutes": [100000, 110000] }, { "adcode": 110118, "provCode": 110000, "cityCode": 110100, "level": "district", "center": [116.843352, 40.377362], "name": "密云区", "bbox": [221210032, 100839679, 632920, 569784], "acroutes": [100000, 110000] }, { "adcode": 110119, "provCode": 110000, "cityCode": 110100, "level": "district", "center": [115.985006, 40.465325], "name": "延庆区", "bbox": [220516782, 100848786, 625419, 516236], "acroutes": [100000, 110000] }], "acroutes": [100000], "bbox": [220283661, 100583324, 1559322, 1580961], "idealZoom": 9 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值