Зацикливание вложенных массивов PHP - извлечение значений в представления Blade (Laravel)

Я знаю, что по этой теме много вопросов, но ни один из них не решает ее (насколько я понял).

У меня есть массив PHP (который, к вашему сведению, возвращается через ответ Guzzle) в проекте Laravel.

Массив PHP

$users = array(2) {
  ["error"]=>
  bool(false)
  ["spirits"]=>
  array(2) {
    [0]=>
    array(2) {
      ["id"]=>
      string(1) "1"
      ["name"]=>
      string(5) "Foo"
    }
    [1]=>
    array(2) {
      ["id"]=>
      string(1) "2"
      ["name"]=>
      string(3) "Bar"
    }
  }
}

Я просто хочу извлечь ключи «id» и «name» ниже, чтобы использовать их в представлении, но я немного озадачен. Я пробовал приведенные ниже предложения, но не могу с этим справиться.

Как сгладить многомерный массив?

PHP foreach с вложенным массивом?

Я также изучил array_walk_recursive.

Любая помощь была бы замечательной и ценилась бы! Я хочу иметь возможность использовать эти 2 ключа в Laravel следующим образом:

Контроллер

return View::make('users')->with('users',$users);

Просмотр

 @foreach ($users as $key => $user)
     {{ $user["id"] }}
     {{ $user["name"] }}
 @endforeach

person Pete    schedule 19.06.2014    source источник


Ответы (2)


Вы можете попробовать это:

@foreach ($users['spirits'] as $user)
 {{ $user["id"] }}
 {{ $user["name"] }}
@endforeach

Лучше проверить возвращенный результат в вашем контроллере, прежде чем отправлять его в представление, используя что-то вроде этого, чтобы в вашем представлении не было ошибок:

$users = 'Get it from somewhere...';
if(!$users['error']) {
    return View::make('users')->with('users', $users);
}
else {
    // Show an error with a different view
}
person The Alpha    schedule 19.06.2014
comment
Спасибо! Часть I отсутствовала $users['spirits'] - person Pete; 20.06.2014

в случае, если ваши пользователи всегда хранятся в spirits-ключе вашей $users переменной, вы просто можете изменить свой @foreach-цикл следующим образом:

@foreach ($users['spirits'] as $user)
    {{ $user['id'] }}
    {{ $user['name'] }}
@endforeach

В противном случае вы можете изменить возвращаемое значение с контроллера. Это означает, что вы просто можете изменить строку:

return View::make('users')->with('users',$users);

to

return View::make('users')->with('users',$users['spirits']);

В этом случае у вас нет доступа к вашему error-ключу.

person Chris    schedule 19.06.2014