本来今天改写写昨天所讲的视频的东西了,但是在课程中谈到了省份,在听完课程后,就在网上找了一个免费的接口调用数据存放在本地,在写视频的时候可以使用;
早了很多,大多都是文档类型需要编写为数据库脚本进行导入,感觉还是太浪费时间,既然已经学习编程那么就要学习使用简单的方式快速的实现,就在晚上课后,在今天工作之余把这个接口完成并且保存在了数据库中,并且编写了此文档;实现方式
1、申请了免费接口,(主要为省一些资金,在一个只调用一次后就存储在了当地数据库中,故而付费也没有大多意义);
2、拿到接口地址以及接口秘钥后,采用循环,该处使用了多次循环, 第一次循环是将 省的数据拿到,拿到后将其使用json_decode 对 JSON 格式的字符串进行解码,数据成为OBJ在使用array()转换为常用的数组;
3、拿到数组在将其进行2次循环拿到每个省的对象
4、拿到省的对象后,进行查询数据库,并且拿出省的fid ,使用接口将省下面的市拿出,再次使用json_decode 对 JSON 格式的字符串进行解码,数据成为OBJ在使用array()转换为常用的数组;
5、再次进行两次循环,拿到每个省下面所有市的obj对象,保存数据库;
附上在学习过程 github 代码仓及码云代码地址:
https://github.com/qingyuxiaoxiao/qingyu.git
https://gitee.com/daogujin/qingyu.git
demo 地址:
demo.nmgseozx.com/admin/login
部分运行结果
代码如下
public function xz() { $dz = 'http://apis.juhe.cn/xzqh/query?fid=&key=f49d9e06ae9d309e1a949cbfe5f54f05'; // 发送请求并且转换为数组 $res = array(file_get_contents($dz)); foreach ($res as $key=>$val){ //使用json_decode 对 JSON 格式的字符串进行解码 $ress = json_decode($val); //转换为数组 $ress = array($ress->result); foreach ($ress as $key=>$vals){ foreach ($vals as $k=>$value){ //将省存入数据库 DB::table('sf')->insert(array('code'=>$value->id,'name'=>$value->name,'fid'=>$value->fid,'level_id'=>$value->level_id)); //将省fid放入接口中进行查询数据 $dsz = 'http://apis.juhe.cn/xzqh/query?fid='.$value->id.'&key=f49d9e06ae9d309e1a949cbfe5f54f05'; // 发送请求并且转换为数组 $dsz =array(file_get_contents($dsz)); foreach ($dsz as $ks=> $va){ $rees = json_decode($va); $rees = array($rees->result); foreach ($rees as $keys=>$valuses){ foreach ($valuses as $keyse => $valusess){ //将城市存入数据库 DB::table('sf')->insert(array('code'=>$valusess->id,'name'=>$valusess->name,'fid'=>$valusess->fid,'level_id'=>$valusess->level_id)); //将省fid放入接口中进行查询数据 $dszs = 'http://apis.juhe.cn/xzqh/query?fid='.$valusess->id.'&key=f49d9e06ae9d309e1a949cbfe5f54f05'; // 发送请求并且转换为数组 $dszs =array(file_get_contents($dszs)); foreach ($dszs as $keysy=>$valusesy){ $reesy = json_decode($valusesy); $reesy = array($reesy->result); foreach ($reesy as $keysys=>$vaas){ foreach ($vaas as $keye=>$vaa){ //将城市存入数据库 DB::table('sf')->insert(array('code'=>$vaa->id,'name'=>$vaa->name,'fid'=>$vaa->fid,'level_id'=>$vaa->level_id)); echo '<pre>'; print_r($valusess); } } } // echo '<pre>'; // print_r($valusess); } } echo '<pre>'; print_r($rees); } } } } }
该次写接口使用了6次循环,感觉还是对系统运行没有什么影响,因为接口在使用中只是执行一次,执行后,将数据保存在了本地的mysql中,也不会再去执行;所以感觉影响应该不会很大;
之前一直都认为接口这个东西是非常高大上的,其实也并不是,在我们写程序的时候其实每一个都是接口,比如保存文档,其实就是一个接口,在此次实例中,已经很好体现,这是我们要考虑将数据拿到我们要如何在进行操作才是最主要的关键