我试图使用foreach循环并使用方法array_push()

时间:2016-09-22 12:45:35

标签: php laravel

我正在尝试循环并收到以下错误:

  

array_push()期望参数1为数组,给定对象

我的控制器:

public function ViewSponsorInfo($sponsor_id)
{
    $id = $sponsor_id;
    $user_id = User::where('id','=',$id)->get();
    $user_roles = [];
    foreach ($user_id as $id) {
        array_push($user_id, $id->role);
    }
}

3 个答案:

答案 0 :(得分:0)

您的阵列推送中混有$user_roles$user_id

更改:

array_push($user_id, $id->role);

array_push($user_roles, $id->role);

array_push的第一个参数是您要将项目推送到的数组。您试图将user_id推送到用户对象,而不是数组,因此错误。

答案 1 :(得分:0)

由于您使用的是一个返回Illuminate\Support\Collection的Eloquent查询,您可以在不循环的情况下实现它:

$user_roles = User::where('id', '=', $id)->pluck('role');

虽然这不是问题的一部分:我想知道为什么你希望通过 id 检索用户时返回多于1条记录?为什么不

$user_roles = User::find($id)->role; // or: User::findOrFail($id)->role

代替?

答案 2 :(得分:0)

试试这个男人,

public function ViewSponsorInfo($sponsor_id)
{
 $id = $sponsor_id;
 $user_id = User::where('id','=',$id)->get();
 $user_roles = [];
 foreach ($user_id as $id) {
    array_push($user_roles, $id->role);
 }
}

或者如果你需要密钥也可以尝试这个

public function ViewSponsorInfo($sponsor_id)
{
 $id = $sponsor_id;
 $user_id = User::where('id','=',$id)->get();
 $user_roles = [];
 foreach ($user_id as $id) {
    array_push($user_roles, array('role' => $id->role));
 }
}