为了账号安全,请及时绑定邮箱和手机立即绑定

如何通过定义特定键来访问 php 中嵌套数组中的所有值?

如何通过定义特定键来访问 php 中嵌套数组中的所有值?

PHP
慕码人2483693 2021-08-27 09:58:00
我正在创建一个路由应用程序并将结果作为 json 数组获取。将其转换为 php 数组后,我正确获得了整个距离和整个持续时间。现在我也需要关键“腿”中的每个值的距离和持续时间,但我为获取数据所做的一切都不起作用。数组的 json 输出如下所示:array (  'routes' =>   array (    0 =>     array (      'legs' =>       array (        0 =>         array (          'summary' => '',          'weight' => 3741.9,          'duration' => 2912.3, // This value is what i want access          'steps' =>           array (          ),          'distance' => 21603.1, // This value is what i want access        ),        1 =>         array (          'summary' => '',          'weight' => 3642.1,          'duration' => 2777.4, // This value is what i want access          'steps' =>           array (          ),          'distance' => 21611.8, // This value is what i want access        ),      ),      'weight_name' => 'routability',      'weight' => 7384,      'duration' => 5689.700000000001, // This value i can acesss      'distance' => 43214.899999999994, // This value i can acesss too    ),  ),  'waypoints' =>   array (    0 =>     array (      'hint' => '',      'distance' => 16.78277948979663, // This value is what i want access      'name' => 'Weg',      'location' =>       array (        0 => 11.4623,        1 => 50.7126,      ),    ),    1 =>     array (      'hint' => '',      'distance' => 16.62835508134535,      'name' => 'Weg',      'location' =>       array (        0 => 12.6069,        1 => 51.5398,      ),    ),    2 =>     array (      'hint' => '',      'distance' => 16.78277948979663,      'name' => 'Weg',      'location' =>       array (        0 => 12.343,        1 => 51.576,      ),    ),  ),  'code' => 'Ok',)我通过以下代码获得整个距离(43214.8)和整个持续时间(5689.7):foreach($res2['routes'] as $item) {    $distances = array_push_assoc($distances, $item['distance'], $item['duration']);}为了获得距离和持续时间,我执行了以下操作:foreach($res2['routes']['legs'] as $item) {    $durations = array_push_assoc($durations , "DUR", $item['duration']);}如何从“腿”获得距离和持续时间?为什么不工作 $res2['routes']['legs']?
查看完整描述

1 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

请注意“legs”数组存在于“routes”数组的索引 0 中,因此循环它需要使用$res2['routes'][0]['legs'].


此外,请注意,使用array_push_assoc具有相同硬编码密钥(如您的示例中的“DUR”)的 in 循环每次都会覆盖该密钥,因此您的数据会丢失 - 您最好将其更改为:


foreach($res2['routes'][0]['legs'] as $item) {

    $durations[] = $item['duration'];

}


查看完整回答
反对 回复 2021-08-27
  • 1 回答
  • 0 关注
  • 145 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信