php中的命名错误

php中的命名错误,php,nominatim,Php,Nominatim,我尝试在我的应用程序上对地址进行地理定位并使它们显示在地图上,但代码中遇到了一个问题 这显示了所有时间的“未知位置”,而不是城市名称 $country_name = ""; $name = ""; $url = "https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=".$lat."&lon=".$lng."&zoom=18&addressdetails=1"; $json_respons

我尝试在我的应用程序上对地址进行地理定位并使它们显示在地图上,但代码中遇到了一个问题

这显示了所有时间的“未知位置”,而不是城市名称

$country_name = "";  
$name = "";

$url = "https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=".$lat."&lon=".$lng."&zoom=18&addressdetails=1";
$json_response = @file_get_contents($url);
$data=json_decode($json_response);

if (property_exists($data, 'error'))
return __("Unknown location");
else
{
  try {
    $name = $data->{'address'}->{'road'};
  } catch(Exception $e){}

  try{
    $country_name = $data->{'address'}->{'country'};
  }catch(Exception $e){}

  if($country_name && $name)
  return $name." / ".$country_name;
  elseif($country_name)
  return $country_name;
  elseif($name)
  return $name;
}
  return __("Unknown location");
}
错误消息是:

消息:正在尝试获取非对象文件的属性: …/lib/helper/GlobalHelper.php行:422=>$country\u name= $data->{'address'}->{'country'}


我用谷歌上的代码解决了这个问题:

$country_name = "";
$name = "";

$url = "https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=".$lat."&lon=".$lng."&zoom=18&addressdetails=1";

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0");
$jsonfile = curl_exec($ch);
curl_close($ch);

$RG_array = json_decode($jsonfile,true);

return __($RG_array['address']['city'].' ( '.$RG_array['address']['state'].' )');
现在,最后一个问题是,对于一些城市,名字出现了,对于其他城市,不是。。。我有一条信息:“未定义索引:城市”。只有“状态”出现在
json\u decode()
之后,执行
var\u转储($data)
并查看是否正确解码,以及结果如何。将输出也添加到问题中,以便我们知道变量包含什么,否则我们将没有机会知道。另外,这个
$data->{'address'}->{'country'}
可以写成:
$data->address->country
我这样做:$data=json\u decode($json\u响应);var_dump($数据);和:$country\u name=$data->address->country;但是我有同样的错误
var_dump($data)将仅输出该变量的内容。这是为了调试,以便我们可以看到变量实际包含的内容。它本身解决不了任何问题。请发布
var\u dump($data)的输出我们可能会有机会帮忙。