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

如何用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);
?>

代码说明

  1. 通过file_get_contents获取API的JSON数据,再用json_decode转为关联数组
  2. 遍历数据里的每一行Rows,再遍历每行的Columns列数据
  3. 匹配到名称为Tromsø的列时,将其数值存入数组
  4. 最后用implode将数值拼接成空格分隔的字符串,按指定格式输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 04:40:17