我有一些对象用户。实体用户有两个字段:firstName和lastName; 在我的控制器中,我将所有用户添加到一个名为employees的数组中。
$employees = array();
foreach($users as $user) {
$employees[] = $user->firstName;
}
如何通过firstName获取数组的视图元素。
我试过这样:
$employees['John']
但它不起作用
提前致谢
答案 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;
}