在 PHP 中显示 JSON 天气 API 响应

Displaying JSON Weather API Response in PHP

在这里查看了这么多其他问题后,我仍然坚持这个问题。首先,我以前从未使用过 JSON 数据,我发现应该相当简单的东西却相当棘手。

我从 DarkSky Weather API

收到了这样的 JSON 回复
{
    "latitude": -26.202271,
    "longitude": 28.043631,
    "timezone": "Africa\/Johannesburg",
    "daily": {
        "summary": "Light rain throughout the week, with high temperatures peaking at 28\u00b0C on Saturday.",
        "icon": "rain",
        "data": [
            {
                "time": 1549317600,
                "summary": "Mostly cloudy throughout the day.",
                "icon": "partly-cloudy-day",
                "sunriseTime": 1549338410,
                "sunsetTime": 1549385960,
                "moonPhase": 0.02,
                "precipIntensity": 0.0737,
                "precipIntensityMax": 0.6121,
                "precipIntensityMaxTime": 1549368000,
                "precipProbability": 0.14,
                "precipType": "rain",
                "temperatureHigh": 22.68,
                "temperatureHighTime": 1549364400,
                "temperatureLow": 15.14,
                "temperatureLowTime": 1549422000,
                "apparentTemperatureHigh": 22.68,
                "apparentTemperatureHighTime": 1549364400,
                "apparentTemperatureLow": 15.14,
                "apparentTemperatureLowTime": 1549422000,
                "dewPoint": 13.85,
                "humidity": 0.74,
                "pressure": 1015.08,
                "windSpeed": 1.84,
                "windGust": 7.01,
                "windGustTime": 1549342800,
                "windBearing": 40,
                "cloudCover": 0.73,
                "uvIndex": 8,
                "uvIndexTime": 1549357200,
                "visibility": 14.03,
                "ozone": 263.92,
                "temperatureMin": 15.02,
                "temperatureMinTime": 1549339200,
                "temperatureMax": 22.68,
                "temperatureMaxTime": 1549364400,
                "apparentTemperatureMin": 15.02,
                "apparentTemperatureMinTime": 1549339200,
                "apparentTemperatureMax": 22.68,
                "apparentTemperatureMaxTime": 1549364400
            },
            {
                "time": 1549404000,
                "summary": "Mostly cloudy throughout the day.",
                "icon": "partly-cloudy-day",
                "sunriseTime": 1549424856,
                "sunsetTime": 1549472325,
                "moonPhase": 0.05,
                "precipIntensity": 0.0432,
                "precipIntensityMax": 0.2819,
                "precipIntensityMaxTime": 1549454400,
                "precipProbability": 0.13,
                "precipType": "rain",
                "temperatureHigh": 24.32,
                "temperatureHighTime": 1549454400,
                "temperatureLow": 15.83,
                "temperatureLowTime": 1549508400,
                "apparentTemperatureHigh": 24.32,
                "apparentTemperatureHighTime": 1549454400,
                "apparentTemperatureLow": 15.83,
                "apparentTemperatureLowTime": 1549508400,
                "dewPoint": 13.06,
                "humidity": 0.67,
                "pressure": 1013.86,
                "windSpeed": 1.34,
                "windGust": 6.01,
                "windGustTime": 1549414800,
                "windBearing": 341,
                "cloudCover": 0.71,
                "uvIndex": 8,
                "uvIndexTime": 1549443600,
                "visibility": 16.09,
                "ozone": 258.39,
                "temperatureMin": 15.14,
                "temperatureMinTime": 1549422000,
                "temperatureMax": 24.32,
                "temperatureMaxTime": 1549454400,
                "apparentTemperatureMin": 15.14,
                "apparentTemperatureMinTime": 1549422000,
                "apparentTemperatureMax": 24.32,
                "apparentTemperatureMaxTime": 1549454400
            },
            {
                "time": 1549490400,
                "summary": "Light rain overnight.",
                "icon": "rain",
                "sunriseTime": 1549511300,
                "sunsetTime": 1549558690,
                "moonPhase": 0.08,
                "precipIntensity": 0.16,
                "precipIntensityMax": 0.6096,
                "precipIntensityMaxTime": 1549573200,
                "precipProbability": 0.23,
                "precipType": "rain",
                "temperatureHigh": 25.43,
                "temperatureHighTime": 1549540800,
                "temperatureLow": 16.47,
                "temperatureLowTime": 1549591200,
                "apparentTemperatureHigh": 25.43,
                "apparentTemperatureHighTime": 1549540800,
                "apparentTemperatureLow": 16.61,
                "apparentTemperatureLowTime": 1549591200,
                "dewPoint": 14.17,
                "humidity": 0.69,
                "pressure": 1013.06,
                "windSpeed": 2.28,
                "windGust": 7.57,
                "windGustTime": 1549497600,
                "windBearing": 342,
                "cloudCover": 0.52,
                "uvIndex": 12,
                "uvIndexTime": 1549533600,
                "visibility": 16.09,
                "ozone": 251.95,
                "temperatureMin": 15.83,
                "temperatureMinTime": 1549508400,
                "temperatureMax": 25.43,
                "temperatureMaxTime": 1549540800,
                "apparentTemperatureMin": 15.83,
                "apparentTemperatureMinTime": 1549508400,
                "apparentTemperatureMax": 25.43,
                "apparentTemperatureMaxTime": 1549540800
            },
            {
                "time": 1549576800,
                "summary": "Mostly cloudy throughout the day.",
                "icon": "partly-cloudy-day",
                "sunriseTime": 1549597745,
                "sunsetTime": 1549645053,
                "moonPhase": 0.11,
                "precipIntensity": 0.2819,
                "precipIntensityMax": 1.1481,
                "precipIntensityMaxTime": 1549584000,
                "precipProbability": 0.39,
                "precipType": "rain",
                "temperatureHigh": 25.17,
                "temperatureHighTime": 1549627200,
                "temperatureLow": 16.64,
                "temperatureLowTime": 1549677600,
                "apparentTemperatureHigh": 25.19,
                "apparentTemperatureHighTime": 1549627200,
                "apparentTemperatureLow": 16.64,
                "apparentTemperatureLowTime": 1549677600,
                "dewPoint": 15.46,
                "humidity": 0.77,
                "pressure": 1013.3,
                "windSpeed": 1.21,
                "windGust": 5.91,
                "windGustTime": 1549580400,
                "windBearing": 310,
                "cloudCover": 0.91,
                "uvIndex": 7,
                "uvIndexTime": 1549616400,
                "visibility": 16.09,
                "ozone": 249.44,
                "temperatureMin": 16.47,
                "temperatureMinTime": 1549591200,
                "temperatureMax": 25.17,
                "temperatureMaxTime": 1549627200,
                "apparentTemperatureMin": 16.61,
                "apparentTemperatureMinTime": 1549591200,
                "apparentTemperatureMax": 25.19,
                "apparentTemperatureMaxTime": 1549627200
            },
            {
                "time": 1549663200,
                "summary": "Rain overnight.",
                "icon": "rain",
                "sunriseTime": 1549684188,
                "sunsetTime": 1549731414,
                "moonPhase": 0.14,
                "precipIntensity": 0.221,
                "precipIntensityMax": 0.7645,
                "precipIntensityMaxTime": 1549670400,
                "precipProbability": 0.27,
                "precipType": "rain",
                "temperatureHigh": 27.92,
                "temperatureHighTime": 1549713600,
                "temperatureLow": 16.84,
                "temperatureLowTime": 1549760400,
                "apparentTemperatureHigh": 27.92,
                "apparentTemperatureHighTime": 1549713600,
                "apparentTemperatureLow": 16.93,
                "apparentTemperatureLowTime": 1549760400,
                "dewPoint": 14.08,
                "humidity": 0.67,
                "pressure": 1011.76,
                "windSpeed": 0.19,
                "windGust": 6.53,
                "windGustTime": 1549688400,
                "windBearing": 145,
                "cloudCover": 0.94,
                "uvIndex": 7,
                "uvIndexTime": 1549702800,
                "visibility": 16.09,
                "ozone": 253.47,
                "temperatureMin": 16.64,
                "temperatureMinTime": 1549677600,
                "temperatureMax": 27.92,
                "temperatureMaxTime": 1549713600,
                "apparentTemperatureMin": 16.64,
                "apparentTemperatureMinTime": 1549677600,
                "apparentTemperatureMax": 27.92,
                "apparentTemperatureMaxTime": 1549713600
            },
            {
                "time": 1549749600,
                "summary": "Rain in the morning.",
                "icon": "rain",
                "sunriseTime": 1549770632,
                "sunsetTime": 1549817775,
                "moonPhase": 0.17,
                "precipIntensity": 1.0668,
                "precipIntensityMax": 4.2316,
                "precipIntensityMaxTime": 1549760400,
                "precipProbability": 0.43,
                "precipType": "rain",
                "temperatureHigh": 24.07,
                "temperatureHighTime": 1549803600,
                "temperatureLow": 17.25,
                "temperatureLowTime": 1549854000,
                "apparentTemperatureHigh": 24.07,
                "apparentTemperatureHighTime": 1549803600,
                "apparentTemperatureLow": 17.25,
                "apparentTemperatureLowTime": 1549854000,
                "dewPoint": 14.73,
                "humidity": 0.72,
                "pressure": 1011.87,
                "windSpeed": 2.52,
                "windGust": 7.58,
                "windGustTime": 1549778400,
                "windBearing": 358,
                "cloudCover": 0.72,
                "uvIndex": 14,
                "uvIndexTime": 1549792800,
                "visibility": 15.58,
                "ozone": 257.27,
                "temperatureMin": 16.84,
                "temperatureMinTime": 1549760400,
                "temperatureMax": 24.07,
                "temperatureMaxTime": 1549803600,
                "apparentTemperatureMin": 16.93,
                "apparentTemperatureMinTime": 1549760400,
                "apparentTemperatureMax": 24.07,
                "apparentTemperatureMaxTime": 1549803600
            },
            {
                "time": 1549836000,
                "summary": "Mostly cloudy starting in the afternoon.",
                "icon": "partly-cloudy-night",
                "sunriseTime": 1549857075,
                "sunsetTime": 1549904134,
                "moonPhase": 0.2,
                "precipIntensity": 0.0381,
                "precipIntensityMax": 0.2489,
                "precipIntensityMaxTime": 1549886400,
                "precipProbability": 0.13,
                "precipType": "rain",
                "temperatureHigh": 26.19,
                "temperatureHighTime": 1549890000,
                "temperatureLow": 15.78,
                "temperatureLowTime": 1549944000,
                "apparentTemperatureHigh": 26.19,
                "apparentTemperatureHighTime": 1549890000,
                "apparentTemperatureLow": 15.78,
                "apparentTemperatureLowTime": 1549944000,
                "dewPoint": 12.99,
                "humidity": 0.61,
                "pressure": 1008.71,
                "windSpeed": 2.54,
                "windGust": 8.12,
                "windGustTime": 1549857600,
                "windBearing": 326,
                "cloudCover": 0.47,
                "uvIndex": 15,
                "uvIndexTime": 1549879200,
                "visibility": 16.09,
                "ozone": 246.75,
                "temperatureMin": 17.25,
                "temperatureMinTime": 1549854000,
                "temperatureMax": 26.19,
                "temperatureMaxTime": 1549890000,
                "apparentTemperatureMin": 17.25,
                "apparentTemperatureMinTime": 1549854000,
                "apparentTemperatureMax": 26.19,
                "apparentTemperatureMaxTime": 1549890000
            },
            {
                "time": 1549922400,
                "summary": "Rain in the afternoon.",
                "icon": "rain",
                "sunriseTime": 1549943518,
                "sunsetTime": 1549990493,
                "moonPhase": 0.24,
                "precipIntensity": 0.3912,
                "precipIntensityMax": 1.6332,
                "precipIntensityMaxTime": 1549972800,
                "precipProbability": 0.48,
                "precipType": "rain",
                "temperatureHigh": 22.24,
                "temperatureHighTime": 1549983600,
                "temperatureLow": 16.23,
                "temperatureLowTime": 1550030400,
                "apparentTemperatureHigh": 22.24,
                "apparentTemperatureHighTime": 1549983600,
                "apparentTemperatureLow": 16.23,
                "apparentTemperatureLowTime": 1550030400,
                "dewPoint": 13.89,
                "humidity": 0.72,
                "pressure": 1008.8,
                "windSpeed": 1.88,
                "windGust": 8.13,
                "windGustTime": 1549972800,
                "windBearing": 1,
                "cloudCover": 0.94,
                "uvIndex": 6,
                "uvIndexTime": 1549958400,
                "visibility": 16.09,
                "ozone": 244.47,
                "temperatureMin": 15.78,
                "temperatureMinTime": 1549944000,
                "temperatureMax": 22.24,
                "temperatureMaxTime": 1549983600,
                "apparentTemperatureMin": 15.78,
                "apparentTemperatureMinTime": 1549944000,
                "apparentTemperatureMax": 22.24,
                "apparentTemperatureMaxTime": 1549983600
            }
        ]
    },
    "offset": 2
}

我现在想要实现的是提取接下来 5 天(今天或昨天除外)的 temperatureHigh 和 temperatureLow。

基于以上代码是从今天 2019-02-05 开始新鲜的,需要排除前两天。所以我想开始我从时间戳中提取的预测数据1549490400

我想得到的是以下显示的回显数据。

Johannesburg
Wednesday [weathericon] MAX: `temperatureHigh` °C LOW: `temperatureLow` °C
Thursday [weathericon] MAX: `temperatureHigh` °C LOW: `temperatureLow` °C
Friday [weathericon] MAX: `temperatureHigh` °C LOW: `temperatureLow` °C
Saturday [weathericon] MAX: `temperatureHigh` °C LOW: `temperatureLow` °C
Sunday [weathericon] MAX: `temperatureHigh` °C LOW: `temperatureLow` °C
Monday [weathericon] MAX: `temperatureHigh` °C LOW: `temperatureLow` °C

我也想像这样只做 3 天的预报

Johannesburg
Wednesday [weathericon] MAX: `temperatureHigh` °C LOW: `temperatureLow` °C
Thursday [weathericon] MAX: `temperatureHigh` °C LOW: `temperatureLow` °C
Friday [weathericon] MAX: `temperatureHigh` °C LOW: `temperatureLow` °C

在我说 [weathericon] 的地方,我需要从每天提取 "icon": "rain" 示例,并将其与本地存储的同名 .jpg / .png 相匹配。 IE。 rain.png 或 rain.jpg

我尝试了各种循环,foreach 此处其他答案的示例,但似乎无法让我正确显示数据。

这是我部分工作的内容,但由于我对 JSON 缺乏理解,不确定为什么我得到所有空白行。

<?php
header('Content-Type: application/json');
$json_string = file_get_contents("https://api.darksky.net/forecast/MYAPIKEY/-26.202271,28.043631?exclude=[currently,minutely,hourly,alerts,flags]&units=si");
$jsondata = json_decode($json_string, true);
//Echo Data
foreach ($jsondata as $max) {
  echo "MAX: ".$max['data'][2]['temperatureHigh']."\n";
  echo "MAX: ".$max['data'][3]['temperatureHigh']."\n";
  echo "MAX: ".$max['data'][4]['temperatureHigh']."\n";
}
?>

上面给了我这个输出

MAX: 
MAX: 
MAX: 
MAX: 
MAX: 
MAX: 
MAX: 
MAX: 
MAX: 
MAX: 25.43
MAX: 25.17
MAX: 27.92
MAX: 
MAX: 
MAX: 

您缺少正确的数组索引。争取:

foreach($jsondata['daily']['data'] as $dayData) {
    $dayData['temperatureHigh'];
}