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

我正在创建一个路由应用程序并将结果作为 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']?


慕码人2483693
浏览 146回答 1
1回答

繁星点点滴滴

请注意“legs”数组存在于“routes”数组的索引 0 中,因此循环它需要使用$res2['routes'][0]['legs'].此外,请注意,使用array_push_assoc具有相同硬编码密钥(如您的示例中的“DUR”)的 in 循环每次都会覆盖该密钥,因此您的数据会丢失 - 您最好将其更改为:foreach($res2['routes'][0]['legs'] as $item) {    $durations[] = $item['duration'];}
打开App,查看更多内容
随时随地看视频慕课网APP