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

Laravel调用国家API提取name字段返回null如何解决

Laravel调用API提取国家name字段为空解决方案

问题原因

你当前直接对接口返回的全量集合调用pluck('name'),但从你给出的响应结构可以看到,name字段不在响应的最外层,最外层仅包含countries等2个顶级键,所有国家数据都嵌套在countries字段对应的数组里,所以直接在最外层检索name自然拿不到值,返回结果为null。你之前用foreach遍历返回空,也是因为遍历对象是最外层数组而非countries内的国家列表。

修正代码

先从响应集合中取出countries对应的国家数组,再对该数组调用pluck方法提取name字段即可,修正后的代码如下:

$response = Http::withHeaders([
    'x-rapidapi-host' => 'world-geo-data.p.rapidapi.com',
    'x-rapidapi-key' => '1fa601995fmshcc1d2fcc97ee24cp1ac29djsn9b9b11cc10ec',
])->get('https://world-geo-data.p.rapidapi.com/countries');

// 可选:先判断接口请求是否成功,避免异常
if (!$response->successful()) {
    return [];
}

// 先取countries字段,再提取name
return $response->collect('countries')->pluck('name')->all();

foreach实现参考

如果你偏好使用foreach遍历实现,写法如下:

$countries = $response->json('countries') ?? [];
$names = [];
foreach ($countries as $country) {
    $names[] = $country['name'];
}
return $names;

内容的提问来源于stack exchange,提问作者Lolu Adelore

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 01:54:03