json文件有时候可以看做是一个小型的数据库,尤其是一些基本不会变的信息,放到json文件当中利于我们保管,当读取数据时我们就需要对json文件进行操作,得到我们想要的数据。
在根据省市县多级联动时,我们通过前台的操作,向后台发出了一个ajax请求,传递的参数是三个code,也就是省市县的代码,而我们希望通过code得到name,也就是获取到省市县的名称,这时候我们可以这样操作。
首先看一下json的部分数据:
[
{
"code": "110000",
"name": "北京市",
"children": [
{
"code": "110100",
"name": "市辖区",
"children": [
{
"code": "110101",
"name": "东城区"
},
{
"code": "110102",
"name": "西城区"
},
{
"code": "110105",
"name": "朝阳区"
},
{
"code": "110106",
"name": "丰台区"
},
{
"code": "110107",
"name": "石景山区"
},
{
"code": "110108",
"name": "海淀区"
},
{
"code": "110109",
"name": "门头沟区"
},
{
"code": "110111",
"name": "房山区"
},
{
"code": "110112",
"name": "通州区"
},
{
"code": "110113",
"name": "顺义区"
},
{
"code": "110114",
"name": "昌平区"
},
{
"code": "110115",
"name": "大兴区"
},
{
"code": "110116",
"name": "怀柔区"
},
{
"code": "110117",
"name": "平谷区"
}
]
},
{
"code": "110200",
"name": "县",
"children": [
{
"code": "110228",
"name": "密云县"
},
{
"code": "110229",
"name": "延庆县"
}
]
}
]
},
{
"code": "120000",
"name": "天津市",
"children": [
{
"code": "120100",
"name": "市辖区",
"children": [
{
"code": "120101",
"name": "和平区"
},
{
"code": "120102",
"name": "河东区"
},
{
"code": "120103",
"name": "河西区"
},
{
"code": "120104",
"name": "南开区"
},
{
"code": "120105",
"name": "河北区"
},
{
"code": "120106",
"name": "红桥区"
},
{
"code": "120110",
"name": "东丽区"
},
{
"code": "120111",
"name": "西青区"
},
{
"code": "120112",
"name": "津南区"
},
{
"code": "120113",
"name": "北辰区"
},
{
"code": "120114",
"name": "武清区"
},
{
"code": "120115",
"name": "宝坻区"
},
{
"code": "120116",
"name": "滨海新区"
}
]
},
{
"code": "120200",
"name": "县",
"children": [
{
"code": "120221",
"name": "宁河县"
},
{
"code": "120223",
"name": "静海县"
},
{
"code": "120225",
"name": "蓟县"
}
]
}
]
},
对于前台的请求,后台可以这样处理:
public function areaAjax()
{
if (request()->isAjax()) {
$fileName = '../public/static/index/static/area.json';
$string = file_get_contents($fileName);
$data = json_decode($string,true);
$arr = array();
foreach ($data as $key => $value) {
if ($value['code']==input('post.province_id')) {
$arr['province_name'] = $value['name'];
foreach ($value['children'] as $key1 => $value1) {
if ($value1['code']==input('post.city_id')) {
$arr['city_name'] = $value1['name'];
foreach ($value1['children'] as $key2 => $value2) {
if ($value2['code']==input('post.county_id')) {
$arr['county_name'] = $value2['name'];
}
}
}
}
}
}
return $arr;
} else {
$this->redirect("admin/cars/lst");
}
}
其中:
$fileName = '../public/static/index/static/area.json';
$string = file_get_contents($fileName);
data = json_decode($string,true);
这三句代码是关键,分别是读取文件,将数据写入到一个变量中,将json格式为变量强制转换成数组,剩下的就是对一个三维数组的处理了,最后得到省市县的name信息,返回给前台。