Abrufen von Daten aus einer JSON-Datei mit PHP

I'm versuchen, Daten aus der folgenden JSON-Datei mit PHP zu erhalten. Ich möchte speziell "temperatureMin" und "temperatureMax".

Es ist wahrscheinlich wirklich einfach, aber ich habe keine Ahnung, wie man das macht. Ich weiß nicht, was ich nach file_get_contents("file.json") tun soll. Für Hilfe wäre ich sehr dankbar!

{
    "daily": {
        "summary": "No precipitation for the week; temperatures rising to 6° on Tuesday.",
        "icon": "clear-day",
        "data": [
            {
                "time": 1383458400,
                "summary": "Mostly cloudy throughout the day.",
                "icon": "partly-cloudy-day",
                "sunriseTime": 1383491266,
                "sunsetTime": 1383523844,
                "temperatureMin": -3.46,
                "temperatureMinTime": 1383544800,
                "temperatureMax": -1.12,
                "temperatureMaxTime": 1383458400,
            }
        ]
    }
}
Lösung

Holen Sie sich den Inhalt der JSON-Datei mit file_get_contents():

$str = file_get_contents('http://example.com/example.json/');

Dekodieren Sie nun das JSON mit json_decode():

$json = json_decode($str, true); // decode the JSON into an associative array

Sie haben ein assoziatives Array, das alle Informationen enthält. Um herauszufinden, wie Sie auf die benötigten Werte zugreifen können, können Sie Folgendes tun:

echo '<pre>' . print_r($json, true) . '</pre>';

Dies gibt den Inhalt des Arrays in einem gut lesbaren Format aus. Beachten Sie, dass der zweite Parameter auf true gesetzt ist, um print_r() mitzuteilen, dass die Ausgabe zurückgegeben werden soll (und nicht nur auf den Bildschirm gedruckt). Dann greifen Sie auf die gewünschten Elemente zu, etwa so:

$temperatureMin = $json['daily']['data'][0]['temperatureMin'];
$temperatureMax = $json['daily']['data'][0]['temperatureMax'];

Oder Sie können das Array in einer Schleife durchlaufen, wie Sie wollen:

foreach ($json['daily']['data'] as $field => $value) {
    // Use $field and $value here
}

Demo!

Kommentare (12)
Try:
$data = file_get_contents ("file.json");
        $json = json_decode($data, true);
        foreach ($json as $key => $value) {
            if (!is_array($value)) {
                echo $key . '=>' . $value . '<br/>';
            } else {
                foreach ($value as $key => $val) {
                    echo $key . '=>' . $val . '<br/>';
                }
            }
        }
Kommentare (1)

Verwenden Sie json_decode, um Ihr JSON in ein PHP-Array umzuwandeln. Beispiel:

$json = '{"a":"b"}';
$array = json_decode($json, true);
echo $array['a']; // b
Kommentare (0)