开发者

PHP: How do I get an attribute from a JSON array?

I have the following JSON array:

<?php    
$json = {
  "status": "OK",
  "results": [ {
    "types": [ "street_address" ],
    "formatted_address": "5721 N Northcott Ave, Chicago, IL 60631, USA",
    "address_components": [ {
      "long_name": "5721",
      "short_name": "5721",
      "types": [ "street_number" ]
    }, {
      "long_name": "Illinois",
      "short_name": "IL",
      "types": [ "administrative_area_level_1", "political" ]
    }, {
      "long_name": "60631",
      "short_name": "60631",
     开发者_StackOverflow社区 "types": [ "postal_code" ]
    } ],
    "geometry": {
      "location": {
        "lat": 41.9858860,
        "lng": -87.7907460
      },
      "location_type": "ROOFTOP",
      "viewport": {
        "southwest": {
          "lat": 41.9827384,
          "lng": -87.7938936
        },
        "northeast": {
          "lat": 41.9890336,
          "lng": -87.7875984
        }
      }
    }
  } ]
};
?>

Using PHP, how do I get the geometery->location->lat&lng values from my JSON array above?

For example (pseudo code):

<?php
$lat = $json['geometry']['location']['lat'];  // 41.9858860
$lng = $json['geometry']['location']['lng'];  // -87.7907460
?>


You use json_decode and then $var->results[0]->geometry->location->lat;.

json_decode yields the following structure:

object(stdClass)[1]
  public 'status' => string 'OK' (length=2)
  public 'results' => 
    array
      0 => 
        object(stdClass)[2]
          public 'types' => 
            array
              0 => string 'street_address' (length=14)
          public 'formatted_address' => string '5721 N Northcott Ave, Chicago, IL 60631, USA' (length=44)
          public 'address_components' => 
            array
              0 => 
                object(stdClass)[3]
                  public 'long_name' => string '5721' (length=4)
                  public 'short_name' => string '5721' (length=4)
                  public 'types' => 
                    array
                      0 => string 'street_number' (length=13)
              1 => 
                object(stdClass)[4]
                  public 'long_name' => string 'Illinois' (length=8)
                  public 'short_name' => string 'IL' (length=2)
                  public 'types' => 
                    array
                      0 => string 'administrative_area_level_1' (length=27)
                      1 => string 'political' (length=9)
              2 => 
                object(stdClass)[5]
                  public 'long_name' => string '60631' (length=5)
                  public 'short_name' => string '60631' (length=5)
                  public 'types' => 
                    array
                      0 => string 'postal_code' (length=11)
          public 'geometry' => 
            object(stdClass)[6]
              public 'location' => 
                object(stdClass)[7]
                  public 'lat' => float 41.985886
                  public 'lng' => float -87.790746
              public 'location_type' => string 'ROOFTOP' (length=7)
              public 'viewport' => 
                object(stdClass)[8]
                  public 'southwest' => 
                    object(stdClass)[9]
                      public 'lat' => float 41.9827384
                      public 'lng' => float -87.7938936
                  public 'northeast' => 
                    object(stdClass)[10]
                      public 'lat' => float 41.9890336
                      public 'lng' => float -87.7875984


You use json_decode.

E.g.:

$json_obj = json_decode($json);
echo $json_obj->results[0]->geometry->location->lat;

We access the first element of the results array, then navigate through the geometry, location, and lat properties. You can also make it use associative arrays, but the default is an object.


Greetings,

I recommend reading the json_decode documentation

  <?php 
     $obj = json_decode($json);
     $lat = $obj->results[0]->geometry->location->lat;
  ?>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜