Laravel按键获取数组元素

时间:2014-08-14 07:44:45

标签: php arrays laravel

我有一些对象用户。实体用户有两个字段:firstName和lastName; 在我的控制器中,我将所有用户添加到一个名为employees的数组中。

$employees = array();
foreach($users as $user) {
    $employees[] = $user->firstName;
}

如何通过firstName获取数组的视图元素。

我试过这样:

$employees['John']但它不起作用

提前致谢

3 个答案:

答案 0 :(得分:1)

您正在这样做的方式只是将一个字符串附加到数组中。数组的键是从0开始的整数。

要将用户名作为索引,请将$employees数组的键设置为$user->firstName,然后在该位置存储$user的对象。这是修复的代码:

$employees = array();
foreach($users as $user) {
    $employees[$user->firstName] = $user;
}

之后你应该可以$employees['John']

请记住,为了能够在视图中使用该数组,您必须将数组传递给视图。例如: 在你的控制器方法中你应该有这样的东西:

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

答案 1 :(得分:0)

将名称添加到数组时,您将得到以下内容:

array(
  [0] => "John",
  [1] => "Martha",
  ...
)

您需要按索引访问名称,我不建议在索引中使用名称,如果两个用户具有相同的名称会怎么样?你最终会覆盖数组中的一个:

Array("John", "John", "Martha")

在使用键作为名称的数组后,您最终得到:

Array(
 [John] => someUser, // <- here you lost one John.
 [Martha] => SomeUser,
)

答案 2 :(得分:0)

您将附加到普通数组,这意味着数组键将从零开始按升序自动为整数。假设我们有#34; Alice&#34;和#34; Bob&#34;在$users数组中,您的代码将生成一个$employees数组,其中包含两个元素:$employees[Ø] = "Alice"$employees[1] = "Bob"

要获得您想要的结果,您需要使用$user->firstName值作为键:

$employees = array();
foreach ($users as $user) {
    $employees[$user->FirstName] = $user->firstName;
}

虽然这不会非常有用,但我认为你的意思是:

$employees = array();
foreach ($users as $user) {
    // use the whole object for this user, not only the firstName field
    $employees[$user->FirstName] = $user;
}