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

PHP遍历连续键值:从PokéAPI获取宝可梦的游戏出现区域与版本

PHP遍历PokéAPI宝可梦遭遇数据提取指南

嘿,我来帮你搞定这个遍历问题!针对PokéAPI里宝可梦的encounters数组,我们可以一步步来提取你需要的location_area['name']和version['name']字段,下面是具体的实现步骤和代码示例:

1. 获取API数据并转换为PHP数组

首先我们需要从API拉取数据,然后把JSON格式转换成PHP能处理的关联数组:

// 指定目标宝可梦ID
$pokemonId = 183;
// 构造API请求地址
$apiUrl = "https://pokeapi.co/api/v2/pokemon/{$pokemonId}/encounters";

// 获取JSON数据(如果服务器禁用了file_get_contents,可以改用cURL实现)
$jsonData = file_get_contents($apiUrl);

// 将JSON转换为PHP关联数组
$encounters = json_decode($jsonData, true);

// 检查数据是否获取成功
if (!$encounters) {
    die("无法获取宝可梦遭遇数据,请检查API链接或网络状态");
}

2. 遍历数组提取目标字段

接下来我们遍历encounters数组,提取每个条目里的区域名称和版本名称。这里我还做了按版本分组+去重的处理,让结果更整洁:

// 初始化一个数组存储整理后的结果
$encounterInfo = [];

foreach ($encounters as $item) {
    // 从嵌套数组中提取需要的字段
    $areaName = $item['location_area']['name'];
    $versionName = $item['version']['name'];
    
    // 按游戏版本分组存储区域
    if (!isset($encounterInfo[$versionName])) {
        $encounterInfo[$versionName] = [];
    }
    // 避免同一版本下重复添加相同区域
    if (!in_array($areaName, $encounterInfo[$versionName])) {
        $encounterInfo[$versionName][] = $areaName;
    }
}

// 输出整理后的结果(这里用HTML格式展示,也可以换成CLI输出)
echo "<h3>宝可梦ID {$pokemonId} 的出现信息</h3>";
foreach ($encounterInfo as $version => $areas) {
    echo "<p><strong>游戏版本:{$version}</strong></p>";
    echo "<ul>";
    foreach ($areas as $area) {
        echo "<li>{$area}</li>";
    }
    echo "</ul>";
}

调试小技巧

如果你不确定数组的结构,或者遇到键名访问错误,可以先打印数组的完整结构来排查:

// 打印数组结构,方便调试
print_r($encounters);

这样就能清楚看到每个层级的键名,避免踩坑~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:04:36