我有一个从Google Maps API返回的 JSON ,我想只检索州/县/地区和国家/地区。
我使用以下简单代码通过 PHP 获取此 json:
$url = 'http://maps.googleapis.com/maps/api/geocode/json?address=the+address&sensor=true&key=my+api+key';
// make the HTTP request
$data = @file_get_contents($url);
$jsondata = json_decode($data,true);
回显 $data 给了我类似的东西:
{
"results" : [
{
"address_components" : [
{
"long_name" : "9",
"short_name" : "9",
"types" : [ "street_number" ]
},
{
"long_name" : "Hanover Street",
"short_name" : "Hanover St",
"types" : [ "route" ]
},
{
"long_name" : "Edinburgh",
"short_name" : "Edinburgh",
"types" : [ "locality", "political" ]
},
{
"long_name" : "City of Edinburgh",
"short_name" : "City of Edinburgh",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "Scotland",
"short_name" : "Scotland",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "United Kingdom",
"short_name" : "GB",
"types" : [ "country", "political" ]
},
{
"long_name" : "EH2",
"short_name" : "EH2",
"types" : [ "postal_code_prefix", "postal_code" ]
},
{
"long_name" : "Edinburgh",
"short_name" : "Edinburgh",
"types" : [ "postal_town" ]
}
]
}
],
"status" : "OK"
}
我想要访问的是多维数组 *address_components* 内部,我假设来自 Google 的每个 JSON 响应每次都会给我相同数量的数组,所以我一直在使用简单的数字索引来访问我需要的数据.
即我认为某些东西$jsondata['results'][0]['address_components'][4]['long_name']
总是会给我'administrative_area_level_2'的long_name值 - 在这种情况下是'爱丁堡市',但我错了。
有时地址组件更多,有时更少。这意味着我需要一种搜索这个数组然后获取它的索引的方法。
这是怎么做的?如,我如何搜索哪个地址组件的类型为“administrative_area_level_1”,然后返回它的“long_name”值?