当前位置: 首页 > news >正文

省市区三级联动数据+PHP接口

数据源放在下面了 夸克网盘

PHP接口获取省市区数据: 

 is_all :获取全部数据,不做处理

不传is_all,默认返回省级数据

传province_code 返回省级下面的市级数据

传province_code 和 city_code 返回省市下面的县区级数据

地区数据源的文件, 异常和返回格式 对应好 就可以了

    /*** 获取地区数据* @return \think\response\Json* @throws BusinessException*/public function getAreas(): \think\response\Json{// 省份编号$provinceCode = $this->request->param('province_code');// 城市编号$cityCode = $this->request->param('city_code');// 是否全部返回$isAll = $this->request->param('is_all');// 读取地区数据文件$filePath = public_path() . '/static/area/citys.json';// 判断文件是否存在if (!file_exists($filePath)) {throw new BusinessException(Code::NOT_FOUND, '地区数据不存在');}// 读取文件 并 解析为数组$areaData = json_decode(file_get_contents($filePath), true);if (!empty($isAll) && $isAll == 1) {return result(Code::SUCCESS, '获取成功', $areaData);}// 如果省份编号和城市编号都为空 --> 获取省份数据if (empty($provinceCode) && empty($cityCode)) {$provinces = [];foreach ($areaData as $province) {$provinces[] = ['province' => $province['province'],'code' => $province['code'],];}return result(Code::SUCCESS, '获取成功', $provinces);// 如果省份编号不为空,城市编号不为空 --> 获取城市数据} else if (!empty($provinceCode) && empty($cityCode)) {$provinceCities = [];foreach ($areaData as $province) {// 如果当前省份编号与传入的省份编号一致if ($province['code'] === $provinceCode) {// 遍历城市foreach ($province['citys'] as $city) {$provinceCities[] = ['city' => $city['city'],'code' => $city['code'],];}break;}}// 如果城市数据为空if (empty($provinceCities)) {throw new BusinessException(Code::NOT_FOUND, '省份不存在');}return result(Code::SUCCESS, '获取成功', $provinceCities);// 如果省份编号不为空,城市编号不为空 --> 获取区县数据} else {$areas = [];foreach ($areaData as $province) {// 如果当前省份编号与传入的省份编号一致if ($province['code'] === $provinceCode) {// 遍历城市foreach ($province['citys'] as $city) {// 如果当前城市编号与传入的城市编号一致if ($city['code'] === $cityCode) {$areas = $city['areas'];break 2;}}}}// 如果区县数据为空if (empty($areas)) {throw new BusinessException(Code::NOT_FOUND, '城市不存在');}return result(Code::SUCCESS, '获取成功', $areas);}}

链接:下载地址
提取码:e78p

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【C++备忘录】
  • 贪心+构造,CF 1592F1 - Alice and Recoloring 1
  • 每日一题-贪心算法
  • Vue状态管理工具:Pinia
  • 接口自动化-代码实现
  • SpringBoot 设置传入参数非必要
  • leetcode每日一题49
  • 微信小程序的四种弹窗使用
  • 【计算机操作系统】段页式管理方式
  • 【网络安全】IDOR之邮箱银行报价
  • 全面讲解Vue中的toRaw函数
  • Go第一个程序
  • 高性能web服务器2——Nginx概述
  • STM32 —— TIM(基本定时器)详解_stm32的tim
  • 实验十 编写子程序《汇编语言》- 王爽
  • 深入了解以太坊
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 2017 年终总结 —— 在路上
  • Android Volley源码解析
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • js算法-归并排序(merge_sort)
  • Magento 1.x 中文订单打印乱码
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • Mithril.js 入门介绍
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • webgl (原生)基础入门指南【一】
  • 观察者模式实现非直接耦合
  • 后端_ThinkPHP5
  • 记录:CentOS7.2配置LNMP环境记录
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 深入浏览器事件循环的本质
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 数据仓库的几种建模方法
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 终端用户监控:真实用户监控还是模拟监控?
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 如何正确理解,内页权重高于首页?
  • ​虚拟化系列介绍(十)
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #13 yum、编译安装与sed命令的使用
  • $jQuery 重写Alert样式方法
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (六)vue-router+UI组件库
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (七)理解angular中的module和injector,即依赖注入
  • (十) 初识 Docker file
  • (十八)三元表达式和列表解析
  • (一)基于IDEA的JAVA基础10
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • ******之网络***——物理***
  • .NET Framework杂记