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

PHP调用英国议会API获取议员全名数据提取问题求助

从英国议会成员API提取nameFullTitle字段的解决方案

问题分析

你调用API成功,但数据提取失败的核心原因是对返回的JSON结构理解有误,导致访问路径错误,同时遍历数组的方式也不符合数据结构。

修正后的代码

保留你原有的callAPI函数,修改数据提取部分的代码即可:

$url = 'https://members-api.parliament.uk/api/Location/Constituency/Search?searchText=KY11%201NF&skip=0&take=20';
$get_data = callAPI('GET', $url, false);
echo '<br>';
$response = json_decode($get_data, true);

// 检查是否存在有效选区数据
if (isset($response['response']['items']) && !empty($response['response']['items'])) {
    // 遍历每个匹配的选区
    foreach ($response['response']['items'] as $constituency) {
        // 逐层访问到nameFullTitle字段
        if (isset($constituency['currentRepresentation']['member']['nameFullTitle'])) {
            echo '议员全名头衔:' . $constituency['currentRepresentation']['member']['nameFullTitle'] . '<br>';
        } else {
            echo '该选区暂无在任议员信息<br>';
        }
    }
} else {
    echo '未找到匹配的选区<br>';
}

// 处理API返回的错误信息(如果有)
if (isset($response['response']['errors']) && !empty($response['response']['errors'])) {
    foreach ($response['response']['errors'] as $error) {
        echo 'API错误:' . $error . '<br>';
    }
}

原代码的问题说明

  1. 访问路径错误:
    原代码中$data = $response['response']['items']['id'][0];是错误的——items是索引数组,必须先通过[0]获取第一个选区元素,再访问内部字段,正确路径是$response['response']['items'][0]['id']。而nameFullTitle字段嵌套在currentRepresentation->member下,需要逐层访问。

  2. 数组遍历错误:
    原代码中直接echo $x1、echo $x2会输出Array(因为这些变量是数组),无法查看具体内容。如果需要调试结构,应该用print_r($x1)或var_dump($x1)。

  3. 错误处理不严谨:
    直接访问$response['response']['errors']可能会因键不存在触发报错,需要先通过isset()判断字段是否存在。

调试技巧

如果不确定JSON结构,可以先执行var_dump($response)打印完整数组,明确每个字段的层级关系后再编写提取逻辑。

内容的提问来源于stack exchange,提问作者David Thorn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:53:27