Пытаюсь собрать массив данных по трем критериям "city","country", "region". Принцип работы таков: считать IP пользователя и подставить его в json, после спарсить 2 значения ("city","country" (регион недоступен)) Но мой код ругается на array_merge. Подскажите, как мне это сделать?
public static function GEO()
{
$ip = Route::clientIp();
$json = file_get_contents('http://geoip.nekudo.com/api/'.$ip);
var_dump($json);
$data = json_decode($json, true);
$loc = [
'city' => null,
'country' => null,
'region' => null
];
$location = array_merge($loc, $data);
return $location;
}
Попробуйте так:
public static function GEO()
{
$ip = Route::clientIp();
$json = file_get_contents('http://geoip.nekudo.com/api/'.$ip);
var_dump($json);
$data = json_decode($json, true);
$location = [
'city' => null,
'country' => null,
'region' => null
];
$location['city'] = $data['city']
$location['country'] = $data['country']['name']
return $location;
}
Или еще проще:
public static function GEO()
{
$ip = Route::clientIp();
$json = file_get_contents('http://geoip.nekudo.com/api/'.$ip);
var_dump($json);
$data = json_decode($json, true);
return [
'city' => $data['city'],
'country' => $data['country']['name'],
'region' => null
];
}
Дело в том, что $data['country']
содержит не значение, а еще один массив:
"name"=>"Russia",
"code"=>"RU"
Поэтому, чтобы добраться до name
, нужно взять элемент массива внутри массива:
$data['country']['name']
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Почему в ссылку не вставляется путь для папки, и как выводить изображение папки, только для папки?
Функция partitionOn принимает 2 аргумента, pred — это функция задающая условия выборки элементов из массива items