如何用PHP解析Nordpool嵌套JSON并输出指定地区的对应数值?
解决PHP解析Nordpool JSON数据输出指定地区数值的问题
你的代码存在语法和逻辑错误,以下是修正后的完整代码及错误说明:
错误点说明
- 循环变量顺序颠倒:外层循环未正确指向
$data内的Rows数组,且循环变量写反(foreach($row as $Rows)完全错误) - 内层循环逻辑错误:遍历列的循环变量完全写反,无法正确获取列数据
- 输出逻辑冗余:每次循环先输出地区名称会导致重复打印,应匹配到目标列后再统一输出
修正后的代码
<?php // 获取API数据 $people_json = file_get_contents('https://www.nordpoolgroup.com/api/marketdata/page/10?currency=,,,EUR'); // 解析JSON为关联数组 $decoded_json = json_decode($people_json, true); // 提取核心数据部分 $data = $decoded_json['data']; // 指定要筛选的地区 $filter = "Tromsø"; // 存储该地区的所有数值 $values = []; // 遍历每一行数据 foreach($data['Rows'] as $row) { // 遍历当前行的所有列 foreach($row['Columns'] as $column) { // 匹配目标地区的列 if($column['Name'] === $filter) { // 将数值存入数组(去除多余空格) $values[] = trim($column['Value']); } } } // 按要求格式输出 echo $filter . ": " . implode(" ", $values); ?>
代码说明
- 通过
file_get_contents获取API的JSON数据,再用json_decode转为关联数组 - 遍历数据里的每一行
Rows,再遍历每行的Columns列数据 - 匹配到名称为
Tromsø的列时,将其数值存入数组 - 最后用
implode将数值拼接成空格分隔的字符串,按指定格式输出
内容的提问来源于stack exchange,提问作者James Collins
相关产品推荐
相关产品推荐

