Как я могу получить доступ ко всем значениям во вложенном массиве в php, определив определенный ключ? - PullRequest
1 голос
/ 17 июня 2019

Я создаю приложение маршрутизации и получаю результат в виде массива 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 ['маршруты'] ['ноги']?

Спасибо!

1 Ответ

0 голосов
/ 17 июня 2019

Обратите внимание, что массив "leg" существует в индексе 0 массива "routs", поэтому для его циклирования потребуется использовать $res2['routes'][0]['legs'].

Более того, обратите внимание, что использование array_push_assoc в цикле с тем же жестко закодированным ключом (как «DUR» в вашем примере) будет переопределять ключ каждый раз, так что ваши данные будут потеряны - вам лучше изменить его на:

foreach($res2['routes'][0]['legs'] as $item) {
    $durations[] = $item['duration'];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...