我遇到了这个问题:我正在尝试显示Weatherground的天气信息,而我正在尝试我收到此回复:
{
"response": {
"version":"0.1",
"termsofService":"http://www.wunderground.com/weather/api/d/terms.html",
"features": {
"forecast": 1
}
}
,
"forecast":{
"txt_forecast": {
"date":"10:52 CEST",
"forecastday": [
{
"period":0,
"icon":"tstorms",
"icon_url":"http://icons.wxug.com/i/c/k/tstorms.gif",
"title":"Venerdì",
"fcttext":"Temporali. Max: 79º F. Venti da S variabili. Prob. pioggia: 80%.",
"fcttext_metric":"Temporali. Max: 26º C. Venti da S variabili. Prob. pioggia: 80%.",
"pop":"80"
}
,
{
"period":1,
"icon":"nt_rain",
"icon_url":"http://icons.wxug.com/i/c/k/nt_rain.gif",
"title":"Venerdì notte",
"fcttext":"Pioggia e tuoni. Min: 62º F. Venti da ENE variabili. Prob. pioggia: 60%.",
"fcttext_metric":"Pioggia e tuoni. Min: 17º C. Venti da ENE variabili. Prob. pioggia: 60%.",
"pop":"60"
}
,
{
"period":2,
"icon":"tstorms",
"icon_url":"http://icons.wxug.com/i/c/k/tstorms.gif",
"title":"Sabato",
"fcttext":"Temporali. Max: 75º F. Venti da SSE variabili. Prob. pioggia: 90%.",
"fcttext_metric":"Temporali. Max: 24º C. Venti da SSE variabili. Prob. pioggia: 90%.",
"pop":"90"
}
使用此代码:
<?php
$json_string = file_get_contents("http://api.wunderground.com/api/***/forecast/lang:IT/q/SW/Lugano.json");
$parsed_json = json_decode($json_string);
$date = $parsed_json->{'forecast'}->{'txt_forecast'}->{'date'};
$named0 = $parsed_json->{'forecast'}->{'txt_forecast'}->{'forecastday'}->{'title'};
$txtd0 = $parsed_json->{'forecast'}->{'txt_forecast'}->{'forecastday'}->{'fcttext'};
echo "$named0, $date: $txtd0";
?>
(我希望得到类似的结果:星期五,10:52CEST:雨天......)
但问题是我无法显示预测,因为第二期(期间:1)的值与第一期的值相同。
我试图将链接放在http://jsonformatter.curiousconcept.com/中,但它只是告诉我这个: ...
"forecastday":[
{
"period":0,
"icon":"tstorms",
"icon_url":"http://icons.wxug.com/i/c/k/tstorms.gif",
"title":"Venerdì",
"fcttext":"Temporali. Max: 79º F. Venti da S variabili. Prob. pioggia: 80%.",
"fcttext_metric":"Temporali. Max: 26º C. Venti da S variabili. Prob. pioggia: 80%.",
"pop":"80"
},
{ },
{ },
{ },
{ },
{ },
{ },
{ }
所以问题是,我怎样才能将这样的不同时期分开:
period0: $named0, $date: $txtd0
period1: $named1, $date: $txtd1
....
因为在代码中我认为无法获得第一个或第二个标题&#39;的回应
$named0 = $parsed_json->{'forecast'}->{'txt_forecast'}->{'forecastday'}->{'title'};
$ named0 必须获得第一个&#39;
的价值谢谢你,对不起我的英语和编码技巧,我还是个新手
答案 0 :(得分:0)
&#39; forecastday&#39;被解码为数组,因此你可以通过以下方式访问它:
$name1 = $parsed_json->forecast->forecastday[1]->name;
我的符号(未使用/尝试过)可能是:
$name1 = $parsed_json->{'forecast'}->{'txt_forecast'}->{'forecastday'}[1]->{'title'};
(这些行李不会进入字符串/&#39; ...&#39;) 但是,forecastday是一个数组,其他的是Objects ...
答案 1 :(得分:0)
像这样:
$data = json_decode('{"response": {"version":"0.1","termsofService":"http://www.wunderground.co/weather/api/d/terms.html","features": {"forecast": 1}},"forecast":{"txt_forecast": {"date":"10:52 CEST", "forecastday": [{"period":0,"icon":"tstorms","icon_url":"http://icons.wxug.com/i/c/k/tstorms.gif", "title":"Venerdì", "fcttext":"Temporali. Max: 79º F. Venti da S variabili. Prob. pioggia: 80%.","fcttext_metric":"Temporali. Max: 26º C. Venti da S variabili. Prob. pioggia: 80%.","pop":"80"},{"period":1,"icon":"nt_rain","icon_url":"http://icons.wxug.com/i/c/k/nt_rain.gif","title":"Venerdì notte","fcttext":"Pioggia e tuoni. Min: 62º F. Venti da ENE variabili. Prob. pioggia: 60%.","fcttext_metric":"Pioggia e tuoni. Min: 17º C. Venti da ENE variabili. Prob. pioggia: 60%.","pop":"60"},{"period":2,"icon":"tstorms","icon_url":"http://icons.wxug.com/i/c/k/tstorms.gif","title":"Sabato","fcttext":"Temporali. Max: 75º F. Venti da SSE variabili. Prob. pioggia: 90%.","fcttext_metric":"Temporali. Max: 24º C. Venti da SSE variabili. Prob. pioggia: 90%.","pop":"90"}]}}}');
foreach ($data->forecast->txt_forecast->forecastday as $forecast)
{
echo printf("%s, %s, %s<br/>", $forecast->title, $data->forecast->txt_forecast->date, $forecast->fcttext);
}
答案 2 :(得分:0)
即使您将json_decode
作为对象,也可以像对待数组一样循环预测日。
foreach( $parsed_json->response->forecast->txt_forecast->forecastday as $key=> $day )
{
print( 'Period' . $day->period . ': ' );
print( $day->title . ', ' );
print( $parsed_json->response->forecast->txt_forecast->date . ' ' );
print( $day->fcttext );
}
或者你可以像这样直接访问它:
$forecastzerotitle = $parsed_json->response->forecast->txt_forecast->forecastday[0]->title );