#arrays #laravel #pluck
#массивы #laravel #выщипывание
Вопрос:
я знаю, что это похоже на другой вопрос, но. что, если мы получим массив данных из базы данных и попытаемся сравнить эти данные?
$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 amp; 3 я думаю, когда я использую db и даю ему силу, это будет тот же результат, когда я использую обычный массив, например [«1″,»2″,»3»].
пожалуйста, поправьте меня, если мое мнение будет неправильным. cz я изучаю. Спасибо перед ответами
Комментарии:
1. это не массивы, это коллекции, которые являются объектами… laravel.com/docs/8.x/collections#available-methods некоторые из доступных методов в классе Collection … если вам нужен массив из коллекций, вы можете вызвать
all()
их2. спасибо за исправление. и как превратить мои данные в массив?
3. но когда я использую весь его ход, например [{data }] и объект внутри массива
4. когда я использую, получаю всю свою очередь, например [[{ data }]]
5. как преобразовать мои данные в массив, подобный [ data]
Ответ №1:
in_array() это 2-й параметр req. массив, и вы предоставляете объект, вот почему эта ошибка
чтобы исправить это, вам нужно использовать функцию toArray() в laravel
$x = Video::where('kursus_id', $data)->pluck('slug')->toArray();
затем вы можете использовать in_array($value, $x)