2013-09-24 3 views
5

Hier ist der json Text:php und nested json: wie kann ich auf dieses element zugreifen?

{ 
"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" 
    }] 
} 

}

Ich versuche echo 'temp_F' und es funktioniert nicht. Ich kann nicht herausfinden, was ich falsch mache. Ich komme so weit:

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

Und das ist, wo alles versagt. Ich habe var_dump gemacht, damit ich weiß, dass die Daten da sind. Aber jeder 'Echo'-Versuch, den ich versucht habe, führt nur dazu, dass' Array 'auf dem Bildschirm angezeigt wird. Ich habe viele Variationen der folgenden versucht:

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

Kann mir jemand sagen, was ich falsch mache? Vielen Dank!

+0

Sie sollten tatsächlich sehen 'Versuch, Eigenschaft von Nicht-Objekt zu bekommen ...', wenn Ihre Fehlerberichterstattung aktiviert ist. – ComFreek

Antwort

10

json_decode() mit TRUE als zweiter Parameter ein assoziatives Array gibt. Aber Sie versuchen gerade, darauf als Objekt zuzugreifen.

Versuchen Sie Folgendes:

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

Das ist nicht, wie Sie Zugriff auf Arrays in

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

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

Für Ihr Beispiel:

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

Sie json verwenden können json Ergebnis einer Variablen abrufen und dann variable Informationen verwenden, um in js anzuzeigen.

$.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++) { } 

    }