2013-09-24 17 views
5

Oto tekst json:php i nested json: w jaki sposób mogę uzyskać dostęp do tego elementu?

{ 
"data": { 
    "current_condition": [{ 
     "cloudcover": "75", 
     "humidity": "63", 
     "observation_time": "03:41 PM", 
     "precipMM": "0.0", 
     "pressure": "1020", 
     "temp_C": "15", 
     "temp_F": "59", 
     "visibility": "16", 
     "weatherCode": "116", 
     "weatherDesc": [{ 
      "value": "Partly Cloudy" 
     }], 
     "weatherIconUrl": [{ 
      "value": "http:\/\/cdn.worldweatheronline.net\/images\/wsymbols01_png_64\/wsymbol_0002_sunny_intervals.png" 
     }], 
     "winddir16Point": "SSE", 
     "winddirDegree": "160", 
     "windspeedKmph": "7", 
     "windspeedMiles": "4" 
    }], 
    "request": [{ 
     "query": "Northville, United States Of America", 
     "type": "City" 
    }], 
    "weather": [{ 
     "date": "2013-09-24", 
     "precipMM": "0.0", 
     "tempMaxC": "20", 
     "tempMaxF": "67", 
     "tempMinC": "8", 
     "tempMinF": "47", 
     "weatherCode": "113", 
     "weatherDesc": [{ 
      "value": "Sunny" 
     }], 
     "weatherIconUrl": [{ 
      "value": "http:\/\/cdn.worldweatheronline.net\/images\/wsymbols01_png_64\/wsymbol_0001_sunny.png" 
     }], 
     "winddir16Point": "ESE", 
     "winddirDegree": "111", 
     "winddirection": "ESE", 
     "windspeedKmph": "10", 
     "windspeedMiles": "6" 
    }] 
} 

}

Próbuję echo 'temp_F' i to nie działa. Nie mogę zrozumieć, co robię źle. Dostaję się tak daleko:

$url = file_get_contents("http://blahblahblahblah"); 
$arr = json_decode($url,true); 

I tam wszystko się nie udaje. Zrobiłem var_dump, więc wiem, że dane tam są. Ale każda próba "echa", której próbowałem, powoduje tylko wyświetlenie ekranu "Tablica". Próbowałem wiele odmian następujących:

echo $arr->{'data'}->{'current_condition[0]'}->{'temp_F'}; 

Czy ktoś może mi powiedzieć, co robię źle? Dzięki!

+0

Powinieneś zobaczyć "Próba uzyskania właściwości nieobiektowej ...", jeśli raportowanie błędów jest aktywne. – ComFreek

Odpowiedz

10

json_decode() z TRUE jako drugi parametr daje tablicę asocjacyjną. Ale obecnie próbujesz uzyskać do niego dostęp jako obiekt.

Spróbuj wykonać następujące czynności:

echo $arr['data']['current_condition'][0]['temp_F']; 
0

That's nie jak masz dostęp do tablic w PHP

$array['index']="value"; 

echo $array['index1']['index2'] 

Dla przykładu:

echo $arr['data']['current_condition'][0]['temp_F'] 
0

Można użyć json json aby pobrać wynik do zmiennej, a następnie użyć zmiennych informacji do wyświetlenia w JS.

$.ajax({ 
    'type': 'GET', 
    'url': 'abc.com, 
    'dataType': 'json', 
    success: function (data) { 

    var response = data; 
    // alert(response.data.current_condition) //something like that 
    // for (var i = 0; i < response.length; i++) { } 

    } 
Powiązane problemy