2017-01-10 168 views
0

如何检查对象中是否存在邻域值?检查对象中是否存在值

{ 
    "results" : [ 
    { 
    "address_components" : [ 
     { 
      "long_name" : "2900", 
      "short_name" : "2900", 
      "types" : [ "street_number" ] 
     }, 
     { 
      "long_name" : "Ranch Road 620 North", 
      "short_name" : "Ranch Rd 620 N", 
      "types" : [ "route" ] 
     }, 
     { 
      "long_name" : "Villas On Travis", 
      "short_name" : "Villas On Travis", 
      "types" : [ "neighborhood", "political" ] 
     }, 
     { 
      "long_name" : "Austin", 
      "short_name" : "Austin", 
      "types" : [ "locality", "political" ] 
     }, 
     { 
      "long_name" : "Travis County", 
      "short_name" : "Travis County", 
      "types" : [ "administrative_area_level_2", "political" ] 
     }, 
     { 
      "long_name" : "Texas", 
      "short_name" : "TX", 
      "types" : [ "administrative_area_level_1", "political" ] 
     }, 
     { 
      "long_name" : "United States", 
      "short_name" : "US", 
      "types" : [ "country", "political" ] 
     }, 
     { 
      "long_name" : "78734", 
      "short_name" : "78734", 
      "types" : [ "postal_code" ] 
     }, 
     { 
      "long_name" : "2209", 
      "short_name" : "2209", 
      "types" : [ "postal_code_suffix" ] 
     } 
    ] 
    } 
] 
} 

我已经试过

if ($jsonarray->results[0]->address_components[2]->types == 'neighborhood') { 
    $neighborhood = $jsonarray->results[0]->address_components[2]->long_name; 
} 
+1

Anywhere的对象中的,或者在一个特定的地方? –

+1

类型仍然是一个数组,所以你不需要说类型[0] – Rob85

+0

只有一个地方:https://maps.googleapis.com/maps/api/geocode/json?latlng=30.560030000000,-97.691430000000 – santa

回答

2

它是一个数组:

if (in_array('neighborhood', $jsonarray->results[0]->address_components[2]->types)) { 
    $neighborhood = $jsonarray->results[0]->address_components[2]->long_name; 
} 

因此,要检查他们,如果是那就是意图,如果只会有一个neighborhood

foreach($jsonarray->results[0]->address_components as $array) { 
    if (in_array('neighborhood', $array->types)) { 
     $neighborhood = $array->long_name; 
     break; 
    } 
} 

或者得到一个$neighborhood阵列中的所有的发现:

foreach($jsonarray->results[0]->address_components as $array) { 
    if (in_array('neighborhood', $array->types)) { 
     $neighborhood[] = $array->long_name; 
    } 
} 
+2

虽然在技术上并不正确,但我怀疑这是如此直接的方法。一些循环可能是为了... – deceze

+0

是的,这是一个扩展的例子。 – AbraCadaver

0
if ($jsonarray->results[0]->address_components[2]->types[0] == 'neighborhood') { 
    $neighborhood = $jsonarray->results[0]->address_components[2]->long_name; 
} 
+2

有没有任何保证,价值将永远在那个地方......? – deceze

+0

但基于他的代码,它在address_components [2]中的保证是什么,他正在寻找它,AbraCadavers的方式是更绝对的 – Rob85