You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP解析嵌套JSON数组:如何获取距离与时长数值?

如何从Google Maps API返回的JSON中提取distance和duration的value值?

我拿到了这样一段Google Maps API返回的JSON数据:

{ 
  "destination_addresses": [ "67-89 Pacific St, Brooklyn, NY 11201, USA" ], 
  "origin_addresses": [ "566 Vermont St, Brooklyn, NY 11207, USA" ], 
  "rows": [ 
    { 
      "elements": [ 
        { 
          "distance": { "text": "6.5 mi", "value": 10423 }, 
          "duration": { "text": "35 mins", "value": 2076 }, 
          "status": "OK" 
        } 
      ] 
    } 
  ], 
  "status": "OK" 
}

我已经知道要用json_decode()来解码这段JSON:

$distance_data = json_decode($output);

但我尝试的写法不对,比如:

$duration_value = $distance_data['rows']['elements']['duration']['value'];

想请教一下正确的提取方式是什么?


嗨,你之所以出错,核心是没注意到JSON里的rows和elements都是数组结构(用[]包裹的部分),必须先通过索引访问它们的元素才行。另外还要注意json_decode()的参数差异,两种访问方式我都给你列出来:

方式1:对象方式访问(默认行为)

json_decode()默认会返回对象,需要用->来访问属性,同时要加上数组索引[0]来取数组里的唯一元素:

$distance_value = $distance_data->rows[0]->elements[0]->distance->value;
$duration_value = $distance_data->rows[0]->elements[0]->duration->value;

方式2:关联数组方式访问(传第二个参数true)

如果习惯用数组的键值对访问,可以给json_decode()传第二个参数true,让它返回关联数组,同样要加上数组索引:

// 传入true,返回关联数组
$distance_data = json_decode($output, true);
$distance_value = $distance_data['rows'][0]['elements'][0]['distance']['value'];
$duration_value = $distance_data['rows'][0]['elements'][0]['duration']['value'];

为什么要加[0]?因为rows和elements都是只包含单个元素的数组,所以取索引0就能拿到我们需要的内容啦。你可以测试这两种写法,应该就能正确提取到目标数值了~

内容的提问来源于stack exchange,提问作者jonmrich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:52:46