Получение данных из файла JSON с помощью PHP


Я пытаюсь получить данные из следующего файла JSON с помощью PHP. Я специально хочу "temperaturemin" и "temperaturemax".

Наверное, это действительно просто, но я понятия не имею, как это сделать. Я застрял на том, что делать после file_get_contents ("файл.json"). Некоторая помощь была бы очень признательна!

{
    "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,
            }
        ]
    }
}
 81
Author: Harold Dunn, 2013-11-04

3 answers

Получить содержимое файла JSON с помощью file_get_contents():

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

Теперь декодируйте JSON с помощью json_decode():

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

У вас есть ассоциативный массив, содержащий всю информацию. Чтобы выяснить, как получить доступ к нужным вам значениям, вы можете сделать следующее:

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

Это выведет содержимое массива в удобном для чтения формате. Обратите внимание, что второй параметр имеет значение true, чтобы print_r() знал, что вывод должен быть верните отредактированное (а не просто распечатанное на экране). Затем вы получаете доступ к нужным элементам, например:

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

Или выполните цикл по массиву, как вы хотите:

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

Демо-версия!

 206
Author: Amal Murali, 2018-04-09 12:16:24

Используйте json_decode для преобразования вашего JSON в массив PHP. Пример:

$json = '{"a":"b"}';
$array = json_decode($json, true);
echo $array['a']; // b
 8
Author: Guilherme Sehn, 2013-11-03 22:28:33
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/>';
                }
            }
        }
 5
Author: Indrajeet Singh, 2014-06-11 06:03:14