我想将google maps html调用中的位置名(如下)添加到一个特定的php变量中,以便1)将其存储在mysql数据库中,2)将其显示为echo语句的一部分(echo$locality)。
http://maps.googleapis.com/maps/api/geocode/json?latlng=34.11375320612877,-118.35220470764159&sensor=false
我已经通过:json_decode($data,true);语句解码了json数据。
考虑到多变量数组结构的复杂性,如果存在一个特定的值,我想深入研究并提取它。一个有助于解释的例子。
以下是为节省空间而删节的json数据:
{
“结果”:[
{
“地址组件”:[
{
“long_name”:“2917-2981”,
“short_name”:“2917-2981”,
“类型”:[“街道号码”]
}
{
“long_name”:“Runyon Canyon路”,
“short_name”:“Runyon Canyon路”,
“类型”:[“路由”]
}
{
“long_name”:“好莱坞山”,
“short_name”:“好莱坞山”,
“类型”:[“邻居”,“政治”]
}
{
“long_name”:“洛杉矶”,
“short_name”:“洛杉矶”,
“types”:[“locality”,“political”]
}
…
我的代码:
…
$data=@文件获取内容($url);
$phpresult=json_decode($data,true);
Var_dump($phpresult);
变量转储($phpresult)显示:
阵列(2){[“结果”]=>阵列(8){[0]=>阵列(4){[“地址元件”]=>阵列(8){[0]=>阵列(3){[“长姓名”]=>字符串(9)“2917-2981”[“短姓名”]=>字符串(9)“2917-2981”[>>字符串(9)“2917-2981”[“类型”]=>阵列(1){[0]=>字符串(13)“街名”}[1]=>阵列(3){[“长姓名”]=>字符串(16)“Runyon Cany Cany Cany Cany Cany Cany Cany Cany Cany Canray(8){[0]=>阵列(3){[“长姓名”[[“长姓名”]=>阵列(3)是的在rd“[”short_name”]=>string(16)“runyon canyon rd”[“types”]=>数组(1){[0]=>string(5)“route”}[2]=>数组(3){[“long戋name”]=>string(15)“hollywood hills”[“short戋name”]=>string(15)“hollywood hills”[“types”]=>数组(2){[0]=>string(12)“邻居”[1]=>string(9)“政治”}[3]=>数组(3){[“long_name”]=>字符串(11)“los angeles”[“short_name”]=>字符串(11)“losangeles”[“types”]=>数组(2){[0]=>字符串(8)“locality”[1]=>字符串(9)“political”}…。<
我想通过搜索/解析/?条件“type=locality”的数组。
我不想使用代码查找信息:
echo$phpresult['results'][0]['address_components'][3]['long_name'];
因为这假设变量总是1)在数组中的同一位置,2)它存在。
任何帮助都将不胜感激。我还没有找到答案,可能读过(但不是完全理解)每一篇关于这个主题的文章。
提前谢谢你的帮助。
肖恩
最佳答案
foreach($phpresult['results'][0]['address_components'] as $location)
{
if(in_array("locality" , $location['types']))
{
$locality[] = $location['long_name'];
}
}
print_r($locality);
每个位置的数组有3个键:long_name、short_name和type。
类型是一个数组,因此,如果其中有一个值“locality”
types array
获取该位置的
long_name
并将其存储。编辑:此函数将存储具有区域类型的所有位置的长名称,
不仅仅是第一个。
为了只获取第一个位置的长名称,在
$locality[] = ...
后面添加“break”。