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

如何通过OpenWeatherMap API获取未来3天每日最高最低气温?

实现未来3天每日最高/最低温统计

原代码的问题在于直接遍历每3小时的原始数据,导致同一天重复输出,且未筛选目标日期范围。同时注意$val['main']['day']是OpenWeatherMap OneCall API的字段,当前使用的Forecast API中不存在,需移除该无效代码。

核心逻辑

  1. 按日期分组:将每3小时的气温数据按自然日归类
  2. 计算每日极值:对每组数据取最高温和最低温
  3. 筛选目标日期:跳过当日,仅保留未来3天的数据并按要求格式输出

修改后的完整代码

$api_forecast   = 'https://api.openweathermap.org/data/2.5/forecast?q=berlin,DE,DE&appid='.$api_key;
$forecast_data  = json_decode(file_get_contents($api_forecast), true);

// 存储每日的最高/最低温及显示日期
$dailyForecast = [];

foreach ($forecast_data['list'] as $val) {
    // 提取纯日期(用于分组的键)
    $dateKey = date('Y-m-d', strtotime($val['dt_txt']));
    // 转换为摄氏度(保留数值用于计算)
    $currentMax = round($val['main']['temp_max'] - 273.15);
    $currentMin = round($val['main']['temp_min'] - 273.15);
    
    // 初始化当日数据
    if (!isset($dailyForecast[$dateKey])) {
        $dailyForecast[$dateKey] = [
            'max_temp' => $currentMax,
            'min_temp' => $currentMin,
            'display_date' => date('l d.m', strtotime($val['dt_txt'])) // 格式:周四 15.09
        ];
    } else {
        // 更新当日最高温(取更大值)
        if ($currentMax > $dailyForecast[$dateKey]['max_temp']) {
            $dailyForecast[$dateKey]['max_temp'] = $currentMax;
        }
        // 更新当日最低温(取更小值)
        if ($currentMin < $dailyForecast[$dateKey]['min_temp']) {
            $dailyForecast[$dateKey]['min_temp'] = $currentMin;
        }
    }
}

// 筛选并输出未来3天的数据
$today = date('Y-m-d');
$displayCount = 0;

foreach ($dailyForecast as $dateKey => $dayData) {
    // 跳过当日
    if ($dateKey === $today) {
        continue;
    }
    // 仅显示3天
    if ($displayCount >= 3) {
        break;
    }
    
    echo '<strong>' . $dayData['display_date'] . ':</strong> 最高温: ' . $dayData['max_temp'] . '°C/最低温: ' . $dayData['min_temp'] . '°C<br>';
    $displayCount++;
}

关键说明

  • 用Y-m-d作为分组键,确保同一天的所有时段数据被归为一组
  • 遍历过程中持续更新每日的最高/最低温,确保最终值为全天的极值
  • 通过$today和$displayCount控制输出范围,仅保留未来3天的数据
  • 输出格式完全匹配需求,无需额外表格结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 07:01:17