循环PHP嵌套数组 - 将值提取到Blade视图(Laravel)

时间:2014-06-19 05:14:12

标签: php arrays laravel blade guzzle

我知道关于这个话题有很多问题,但没有一个问题(据我所见)。

我在Laravel项目中有一个PHP数组(通过Guzzle响应返回FYI)。

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"和"名称"下面的键,在视图中使用,但我有点难过。我已尝试过以下建议,但无法完成。

How to Flatten a Multidimensional Array?

PHP foreach with Nested Array?

我还调查了 array_walk_recursive

任何帮助都会很棒并且值得赞赏!我希望能够在Laravel中使用这两个键,如下所示:

控制器

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

查看

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

2 个答案:

答案 0 :(得分:4)

你可以试试这个:

@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
}

答案 1 :(得分:1)

如果您的用户始终存储在spirits - $users变量的关键字中,您只需修改@foreach - 循环,如下所示:

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

否则,您可以从控制器编辑返回值。这意味着您只需更改该行:

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

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

在这种情况下,您无权访问error - 键。