我正在尝试制作天气应用程序。我知道如何获取当前条件,但说实话,我不太了解JSON。我不知道如何从OpenWeatherMap获取7天的预测。我已经尝试了几乎所有我能想到的东西,但没有任何效果。我正在尝试从PHP中获取它。说实话,我真的不知道它是如何运作的。如果有人可以提供帮助,那将不胜感激。
我把['city'] ['name'];仅作为一个例子。
我的PHP代码:
<?php
$city="London";
$country="UK";
$url="http://api.openweathermap.org/data/2.5/forecast/daily?q=".$city.",".$country."&units=metric&cnt=7&lang=en&appid=c0c4a4b4047b97ebc5948ac9c48c0559";
$json=file_get_contents($url);
$data=json_decode($json,true);
$data['city']['name'];
?>
这是JSON数据:
"city":{
"id":2643743,
"name":"London",
"coord":{
"lon":-0.12574,
"lat":51.50853
},
"country":"GB",
"population":0
},
"cod":"200",
"message":0.0132,
"cnt":7,
"list":[
{
"dt":1462532400,
"temp":{
"day":15.49,
"min":13.16,
"max":15.49,
"night":13.16,
"eve":15.49,
"morn":15.49
},
"pressure":1015.77,
"humidity":50,
"weather":[
{
"id":802,
"main":"Clouds",
"description":"scattered clouds",
"icon":"03n"
}
],
"speed":4.47,
"deg":116,
"clouds":48
},
{
"dt":1462618800,
"temp":{
"day":23.03,
"min":13.57,
"max":23.03,
"night":15.77,
"eve":21.37,
"morn":13.57
},
"pressure":1015.43,
"humidity":50,
"weather":[
{
"id":803,
"main":"Clouds",
"description":"broken clouds",
"icon":"04d"
}
],
"speed":4.43,
"deg":127,
"clouds":56
},
{
"dt":1462705200,
"temp":{
"day":24.2,
"min":16.14,
"max":24.53,
"night":18.32,
"eve":23.58,
"morn":16.14
},
"pressure":1016.42,
"humidity":42,
"weather":[
{
"id":803,
"main":"Clouds",
"description":"broken clouds",
"icon":"04d"
}
],
"speed":7.22,
"deg":121,
"clouds":68
},
{
"dt":1462791600,
"temp":{
"day":23.4,
"min":17.51,
"max":23.59,
"night":18.36,
"eve":22.42,
"morn":17.51
},
"pressure":1017.75,
"humidity":49,
"weather":[
{
"id":800,
"main":"Clear",
"description":"clear sky",
"icon":"02d"
}
],
"speed":8.36,
"deg":106,
"clouds":8
},
{
"dt":1462878000,
"temp":{
"day":22.79,
"min":16.59,
"max":22.88,
"night":17.15,
"eve":21.54,
"morn":16.59
},
"pressure":1013.95,
"humidity":50,
"weather":[
{
"id":802,
"main":"Clouds",
"description":"scattered clouds",
"icon":"03d"
}
],
"speed":8.53,
"deg":89,
"clouds":36
},
{
"dt":1462964400,
"temp":{
"day":19.18,
"min":13.92,
"max":19.18,
"night":14.57,
"eve":18.88,
"morn":13.92
},
"pressure":1004.19,
"humidity":0,
"weather":[
{
"id":500,
"main":"Rain",
"description":"light rain",
"icon":"10d"
}
],
"speed":3.24,
"deg":180,
"clouds":22,
"rain":2.13
},
{
"dt":1463050800,
"temp":{
"day":14.84,
"min":8.83,
"max":14.84,
"night":8.83,
"eve":12.92,
"morn":12.53
},
"pressure":1005.56,
"humidity":0,
"weather":[
{
"id":500,
"main":"Rain",
"description":"light rain",
"icon":"10d"
}
],
"speed":4.14,
"deg":325,
"clouds":73,
"rain":2.86
}
]
}
对不起,如果这是一个非常愚蠢的问题,但任何帮助将不胜感激,谢谢!
答案 0 :(得分:5)
因此,您实际上是在接收未来6天的信息。看一下完整的数组做一个
print_r($data);
正如您所看到的那样,完整的结果是6天,例如:
[5] => Array
(
[dt] => 1462964400
[temp] => Array
(
[day] => 19.18
[min] => 13.92
[max] => 19.18
[night] => 14.57
[eve] => 18.88
[morn] => 13.92
)
[pressure] => 1004.19
[humidity] => 0
[weather] => Array
(
[0] => Array
(
[id] => 500
[main] => Rain
[description] => light rain
[icon] => 10d
)
)
[speed] => 3.24
[deg] => 180
[clouds] => 22
[rain] => 2.13
)
所以你需要做的是一个foreach
foreach($data['list'] as $day => $value) {
echo "Max temperature for day " . $day . " will be " . $value[temp][max] . "<br />" ;
}
这将返回:
Max temperature for day 0 will be 21.87
Max temperature for day 1 will be 23.03
Max temperature for day 2 will be 24.53
Max temperature for day 3 will be 23.59
Max temperature for day 4 will be 22.88
Max temperature for day 5 will be 19.18
Max temperature for day 6 will be 14.84
希望这有帮助!