You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP调用API时如何提取单条/指定字段数据(如district)

实现方法

你调用的邮编查询接口返回的是JSON格式数据(你当前代码里的$xmldata变量命名有误,实际拿到的是JSON字符串不是XML),要提取指定字段只需要先把JSON字符串解析为PHP可操作的数组/对象,再按数据结构读取对应字段即可。

具体修改逻辑

  • 保留原有curl请求逻辑拿到返回结果后,先做请求成功判断、JSON格式合法性校验
  • 用json_decode()把JSON字符串转为PHP关联数组
  • 按接口返回的层级结构读取district字段:该接口返回的顶层是索引数组,第一个元素下的PostOffice是存储邮编对应地址信息的数组,每个地址项里包含District字段(注意字段首字母大写)

修改后的完整代码

<?php
$url = "https://api.postalpincode.in/pincode/201301";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 注:该公开邮编接口无需Basic认证,以下两行配置可删除,不影响正常请求
// curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
// curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_TIMEOUT, 3600);
$response = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);

// 判断请求是否成功
if ($response === false) {
    exit("接口请求失败");
}

// 解析JSON为关联数组,第二个参数传true表示返回数组而非对象
$data = json_decode($response, true);
// 判断JSON解析是否合法
if (json_last_error() !== JSON_ERROR_NONE) {
    exit("返回数据格式解析失败");
}

// 按结构读取district字段,同一个邮编可能对应多个投递区,这里默认取第一个匹配的行政区,做兜底避免报错
$district = $data[0]['PostOffice'][0]['District'] ?? '未查询到对应行政区';

// 直接输出目标字段
echo $district;
?>

补充说明

如果同一个邮编对应多个行政区需要全部输出,可以遍历PostOffice数组取值,示例代码:

if (!empty($data[0]['PostOffice'])) {
    foreach ($data[0]['PostOffice'] as $addressItem) {
        echo $addressItem['District'] . "<br>";
    }
}

内容的提问来源于stack exchange,提问作者Hemant Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 03:12:23