in_array() 期望参数 2 为数组,对象给定

in_array() expects parameter 2 to be array, object given

我知道这与其他问题类似,但是。 如果我们从 db 获取数据数组并尝试比较这些数据怎么办?

$x = Video::where('kursus_id', $data)->pluck('slug');
$z = Video::where('kelas_id', $data_id_kelas)
    ->where('mapel_id', $data_id_mapel)
    ->pluck('slug');

foreach ($z as $value) {
    if (in_array($value, $x)) {
    
    } else {
         echo $value.'<br>';
    }
}

这给我一个错误,例如 in_array() expects parameter 2 to be array, object given

但是当我尝试更改 $x 和 $z 时 $x=["2"] $z=["1","2","3"] 那是工作。输出为 1 & 3 我想当我使用 db 并给它 pluck 时,当我使用像 ["1","2","3"] 这样的常规数组时,这将变成相同的输出。

如果我的观点不正确,请指正。 cz我在学习。先谢谢小伙伴们

in_array() 它是第二个参数请求。 array 并且你正在给 object 这就是为什么这个错误

要解决此问题,您需要使用 laravel

中的 toArray() 函数
$x = Video::where('kursus_id', $data)->pluck('slug')->toArray();

那么你可以使用in_array($value, $x)