Я пытаюсь получить атрибут city
из IP-адреса геолокации api. Пример того, что возвращается из API:PHP, если инструкция else проверяет, является ли поле api php пустым
{"as":"AS38484 Virgin Broadband VISP","city":"Adelaide","country":"Australia","countryCode":"AU","isp":"iseek Communications","lat":-27,"lon":133,"org":"iseek Communications","query":"1.178.0.144","region":"","regionName":"","status":"success","timezone":"","zip":""}
Мой код:
$query = '{"as":"AS38484 Virgin Broadband VISP","city":"Adelaide","country":"Australia","countryCode":"AU","isp":"iseek Communications","lat":-27,"lon":133,"org":"iseek Communications","query":"1.178.0.144","region":"","regionName":"","status":"success","timezone":"","zip":""}';
$query = @unserialize($query);
if($query && $query['status'] == 'success') {
if(!empty($query['city'])) {
$city = $query['city'];
// routine that uses $city gets called
} else {
$lat = $query['lat'];
$lon = $query['lon'];
// routine that uses $lat, $lon gets called
}
}
В принципе, if(!empty($query['city']))
не ведет себя, как и ожидалось (не то, что я действительно знаю, я использую PHP для этой последней недели). Я также попытался установить $city
перед оператором if, а затем проверить if($city != '')
.
Вопрос: Никакой комбинации условий не находит, а затем устанавливает атрибут города city
? И когда нет атрибута города, он также пропускает часть else и не устанавливает lat
/lon
.
Примечание: причина дифференциации между city
и lat
/lon
погода апи я запрашивая предпочитает city
, но не каждый IP может обеспечить один.
Благодаря
Также в чем вопрос? – Rizier123
Точка с запятой есть в коде :). Городской атрибут никогда не будет найден, проблема будет извиняться за редактирование. – Lanzafame