PHP:如何从JSON数组中获取属性?

3

我有以下JSON数组:

<?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",
      "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
        }
      }
    }
  } ]
};
?>

使用PHP,如何从上述JSON数组中获取geometery->location->latlng的值?
例如(伪代码):
<?php
$lat = $json['geometry']['location']['lat'];  // 41.9858860
$lng = $json['geometry']['location']['lng'];  // -87.7907460
?>
3个回答

5
你可以使用json_decode,然后访问$var->results[0]->geometry->location->lat;json_decode返回以下结构:
对象(stdClass)[1]
  公共的 '状态' => 字符串 'OK' (长度=2)
  公共的 '结果' => 
    数组
      0 => 
        对象(stdClass)[2]
          公共的 '类型' => 
            数组
              0 => 字符串 '街道地址' (长度=14)
          公共的 '格式化地址' => 字符串 '5721 N Northcott Ave, Chicago, IL 60631, USA' (长度=44)
          公共的 '地址组件' => 
            数组
              0 => 
                对象(stdClass)[3]
                  公共的 '长名' => 字符串 '5721' (长度=4)
                  公共的 '短名' => 字符串 '5721' (长度=4)
                  公共的 '类型' => 
                    数组
                      0 => 字符串 '门牌号码' (长度=13)
              1 => 
                对象(stdClass)[4]
                  公共的 '长名' => 字符串 '伊利诺伊州' (长度=8)
                  公共的 '短名' => 字符串 'IL' (长度=2)
                  公共的 '类型' => 
                    数组
                      0 => 字符串 '行政区划级别1' (长度=27)
                      1 => 字符串 '政治' (长度=9)
              2 => 
                对象(stdClass)[5]
                  公共的 '长名' => 字符串 '60631' (长度=5)
                  公共的 '短名' => 字符串 '60631' (长度=5)
                  公共的 '类型' => 
                    数组
                      0 => 字符串 '邮政编码' (长度=11)
          公共的 '几何' => 
            对象(stdClass)[6]
              公共的 '位置' => 
                对象(stdClass)[7]
                  公共的 '纬度' => 浮点数 41.985886
                  公共的 '经度' => 浮点数 -87.790746
              公共的 '位置类型' => 字符串 '屋顶' (长度=7)
              公共的 '视图框' => 
                对象(stdClass)[8]
                  公共的 '西南角' => 
                    对象(stdClass)[9]
                      公共的 '纬度' => 浮点数 41.9827384

3
您使用 json_decode

E.g.:

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

我们访问结果数组的第一个元素,然后浏览几何、位置和纬度属性。你也可以使用关联数组,但默认是对象。

如果我使用json_decode,那么接下来呢?我该如何引用LAT和LNG的值? - TeddyR
我已经阅读了链接中的示例,但仍然无法弄清楚。这就是为什么我现在要在SO上发布这个问题的原因。 - TeddyR

2

您好,

我建议阅读json_decode文档。

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

1
我已经阅读了链接中的示例,但仍然无法弄清楚。这就是为什么我现在要在SO上发布这个问题的原因。 - TeddyR
好的,希望你已经解决了。 - kobrien

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接