Получить PHP массив с JSON

232
13 августа 2017, 07:43

Здравствуйте. Пытаюсь получить PHP массив с JSON и вывести все названия городов по стране. Ничего не выводит. Json валидный, проверял здесь. В чем моя ошибка?

$json[] = file_get_contents('http://turmagnat-demo.ideaperm.ru/hotels/Output_1.json');
$array = json_decode($json, true);
$country = "Ямайка";
$city = "";
foreach ( $array  as $key => $value){
    if($value['country'] == $country) {
        $city .= $value['city'];
    }
}
echo $city;

Пример JSON файла:

[
  {
    "id": "al130489",
    "sourceUrl": "http://tophotels.ru/hotel/al130489",
    "country": "США",
    "city": "Висконсин",
    "name": "Hilton Garden Inn Appleton/Kimberly 3*",
    "description": null,
    "reviews": [],
    "images": []
  },
  {
    "id": "al277646",
    "sourceUrl": "http://tophotels.ru/hotel/al277646",
    "country": "Италия",
    "city": "Лидо ди Камайоре",
    "name": "Villa Il Fortino",
    "description": null,
    "reviews": [],
    "images": []
  }
]
Answer 1

Возможно вы зря в массив помещаете данные, попробуйте так

$json = file_get_contents('http://turmagnat-demo.ideaperm.ru/hotels/Output_1.json');
$array = json_decode($json, true);
Answer 2

А еще лучше всегда проверить что json преобразовался в массив, иначе получите ошибку invalid argument supplied foreach, json_decode в случае ошибки вернет вам NULL вместо массива, поэтому лучше так:

$array = json_decode($json, true) ?? [];

либо

$array = json_decode($json, true) ?: [];
READ ALSO
Windows2012+php+mysql+apache - замирает жесткий диск

Windows2012+php+mysql+apache - замирает жесткий диск

Привет, есть работающий проект документооборота на PHPМашина на которую поставлен - Windows2012+php+mysql+apache виртуальная с 2 процессорами 4 ГБ и жесткий...

199
Отправка уведомлений с сайта в систему MacOS

Отправка уведомлений с сайта в систему MacOS

На некоторых сайтах видел всплывающее окно о том, чтобы отправлять новости в центр уведомлений MacOSКак такое можно реализовать? Пытался найти...

228