5

我知道关于这个话题有很多问题,但没有一个能完全解决这个问题(据我所知)。

我在 Laravel 项目中有一个 PHP 数组(仅供参考,通过 Guzzle 响应返回)。

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

任何帮助都会很棒和感激!我希望能够像这样在 Laravel 中使用这两个键:

控制器

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

看法

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

2 回答 2

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
}
于 2014-06-19T06:16:27.883 回答
1

如果您的用户始终存储在变量的spirits-key 中,$users您只需@foreach按如下方式修改 -loop:

@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-key。

于 2014-06-19T06:16:46.277 回答