array_push()函数在Laravel中不起作用

时间:2017-03-02 05:55:34

标签: php laravel

我在Laravel开发Web应用程序。以下代码不是来自应用程序,而是让您简单了解我遇到的问题。

以下代码可以使用

public $my_users = [];  //This is outside function

$users = [];
$users = User::all();
$this->my_users = $users;

这非常简单,工作正常。但是,我希望能够遍历所有用户并添加我选择的用户:

public $my_users = [];  //This is outside function

$users = [];
$all_users = User::all();
foreach ($all_users as $user)
{
    array_push($users, $user);
}
$this->my_users = $users;

同样,我在这里做的事情背后没有任何逻辑,它只是一个例子。

在这种情况下,两段代码应该具有相同的结果。但是,第二段代码不起作用。似乎是array_push函数不在这里工作。这有什么原因吗?我该怎么办?

4 个答案:

答案 0 :(得分:3)

User::all();会返回collection (Illuminate\Database\Eloquent\Collection)类型。 因此,您首先使用数组$users = [];来代码并使用以下命令覆盖它:

$this->my_users = User::all();

因此,您基本上将一个集合分配给$this->my_users

第二个代码块,您将循环遍历该集合并将其分配给该数组。

$this->my_users = [
   //instance of App\User 1,
   //instance of App\User 2 etc
];

尝试dd结果,您应该能够看到更清晰的图片。

答案 1 :(得分:1)

Laravel的查询结果始终为collection,因此如果过滤是您真正需要的,那么请执行以下操作:

$users = Users::all()->filter(function ($u) { /* conditions to accept the user */ });

答案 2 :(得分:0)

您可以使用Laravel的默认帮助程序而不是array_push

array_add()

请参阅此处的文档: https://laravel.com/docs/5.4/helpers#method-array-add

答案 3 :(得分:-1)

$users.push($user); 我认为这是你进入阵列的方式