Зацикливание на коллекции выдает неопределенную ошибку индекса - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть коллекция данных API о футбольном турнире. Я хочу перебрать каждый элемент в table[] Когда я регистрирую $team['table'], проблем нет, но когда я пытаюсь глубже проникнуть в массивы, я получаю ошибки.

Код:

collect($standings['standings'])
    ->each(function ($team, $key) {
          \Log::debug($team['table']);
     });

Результат

[2018-11-03 23:08:12] local.DEBUG: array (
  0 => 
  array (
    'position' => 1,
    'team' => 
    array (
      'id' => 64,
      'name' => 'Liverpool FC',
      'crestUrl' => 'http://upload.wikimedia.org/wikipedia/de/0/0a/FC_Liverpool.svg',
    ),
    'playedGames' => 11,
    'won' => 8,
    'draw' => 3,
    'lost' => 0,
    'points' => 27,
    'goalsFor' => 21,
    'goalsAgainst' => 5,
    'goalDifference' => 16,
  ), 
  etc...

Результат при попытке перейти в массив team

collect($standings['standings'])
    ->each(function ($team, $key) {
          \Log::debug($team['table']['team']['name']);
     });

ошибка

local.ERROR: Undefined index: team {"exception":"[object] (ErrorException(code: 0):

Я зациклился на похожих данных API без каких-либо проблем, чего мне здесь не хватает?

Мое решение

У меня есть вложенный массив table[] в моей коллекции, $team не существует в этом массиве, поэтому мне нужно перебрать мой table[] отдельно. Следующий код работает.

collect($standings['standings'])
->each(function ($standing, $key){
    if ($standing['type'] == "TOTAL") {
        collect($standing['table'])
        ->each(function ($value, $key) {
               \Log::debug($value['team']['name']);
        });
    }
});

Есть ли лучшие способы сделать то же самое?

...