asgwar12
asgwar12

Reputation: 131

Accessing key-value pair in PHP array

When converted to PHP array (not stdClass Object), how can I access geometry to location to lat and long? I've tried $data['results']['geometry']['location']['lat'] and ['lng'] but it didn't work.

I was getting undefined offset and cannot use string offset as array, etc.

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "1600",
               "short_name" : "1600",
               "types" : [ "street_number" ]
            },
            {
               "long_name" : "Amphitheatre Parkway",
               "short_name" : "Amphitheatre Pkwy",
               "types" : [ "route" ]
            },
            {
               "long_name" : "Mountain View",
               "short_name" : "Mountain View",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Santa Clara County",
               "short_name" : "Santa Clara County",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "California",
               "short_name" : "CA",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "United States",
               "short_name" : "US",
               "types" : [ "country", "political" ]
            },
            {
               "long_name" : "94043",
               "short_name" : "94043",
               "types" : [ "postal_code" ]
            }
         ],
         "formatted_address" : "1600 Amphitheatre Parkway, Mountain View, CA 94043, USA",
         "geometry" : {
            "location" : {
               "lat" : 37.4222953,
               "lng" : -122.0840671
            },
            "location_type" : "ROOFTOP",
            "viewport" : {
               "northeast" : {
                  "lat" : 37.42364428029151,
                  "lng" : -122.0827181197085
               },
               "southwest" : {
                  "lat" : 37.42094631970851,
                  "lng" : -122.0854160802915
               }
            }
         },
         "types" : [ "street_address" ]
      }
   ],
   "status" : "OK"
}

Upvotes: 1

Views: 132

Answers (3)

Shadow Radiance
Shadow Radiance

Reputation: 1369

You seem to have missed that$data['results'] is an array with one element, so you need to reference that element with [0].

Try: $data['results'][0]['geometry']['location']['lat']

Upvotes: 0

nem035
nem035

Reputation: 35481

Your way:

$data['results']['geometry']['location']['lat'] // same for ['lng']

You forgot to put the index

$data['results'][0]['geometry']['location']['lat'] // same for ['lng']

Upvotes: 0

Rob M.
Rob M.

Reputation: 36511

$data['results'] is an indexed array. You just need to fix how you are accessing it:

$data['results'][0]['geometry']['location']['lat']

Upvotes: 3

Related Questions