ThinkPHP5&5.1下读取json文件数据

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信息,返回给前台。

猜你喜欢

转载自blog.csdn.net/pan_yuyuan/article/details/81948442
今日推荐