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

问题描述

我知道这与其他问题类似,但是。 如果我们从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并采摘时,当我使用像[“ 1”,“ 2”,“ 3”]这样的常规数组时,它将变成相同的输出

如果我的看法有误,请纠正我。正在研究中。在队友们之前感谢

解决方法

in_array()它是第二个参数要求。数组,而您给出的对象就是这个错误的原因

要解决此问题,您需要在laravel中使用toArray()函数

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

然后您可以使用in_array($value,$x)