下面是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;
}
生成的效果还不错!这个思路可以解决很多类似的问题哦!比如多层类目的遍历等等!
?
|