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
相关产品推荐
相关产品推荐

