2017-01-10 5 views
0

Wie überprüfe ich, ob ein Nachbarschaftswert im Objekt vorhanden ist?Prüfen, ob Wert im Objekt vorhanden ist

{ 
    "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" ] 
     } 
    ] 
    } 
] 
} 

Ich habe versucht

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

überall in dem Objekt oder an einem bestimmten Ort? –

+1

Typen ist immer noch ein Array, also müssen Sie nicht sagen, Typen [0] – Rob85

+0

Es gibt nur einen Ort: https://maps.googleapis.com/maps/api/geocode/json?atlnng=30.560030000000,-97.691430000000 – santa

Antwort

2

Es ist ein Array:

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

Also, sie alle zu prüfen, ob das ist die Absicht ist, wenn es nur eine sein wird neighborhood:

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

Oder um eine 01 zu bekommenArray alles gefunden:

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

Obwohl technisch nicht inkorrekt, bezweifle ich, dass es vernünftig ist, dies so direkt anzugehen. Irgendeine Schleife ist wahrscheinlich in Ordnung ... – deceze

+0

Ja, es war ein Beispiel, auf das man sich erweitern sollte. – AbraCadaver

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

Gibt es irgendeine Garantie, dass der Wert immer an genau diesem Ort sein wird ...? – deceze

+0

aber was die Garantie in address_components [2] ist, basierend auf seinem Code, wo er es sucht, ist AbraCadavers übrigens absoluter – Rob85

Verwandte Themen