Как использовать метод пересечения массива для соответствия двум значениям в пределах 2 наборов массивов

У меня есть этот запрос:

$subcommon= MyModel::selectRaw('subjectlist_id, count(subjectlist_id) AS aggregate') ->whereIn('user_id', [Auth::id(), $user->id]) ->groupBy('subjectlist_id') ->having('aggregate','>',1) ->get(); 

который дает результат этого запроса:

 {"subjectlist_id":1,"aggregate":2} {"subjectlist_id":3,"aggregate":2} 

У меня также есть этот запрос:

 $values = Mysecondmodel::where('user_id', Auth::id()) ->first(); 

который дает следующий результат:

 {"id":1,"subjectlist_id":1, "article_id":4} 

Поскольку им трудно установить эти две модели, я решил вывести их как массивы, поэтому мне хотелось бы, по крайней мере, 1 совпадающее значение для subjectlist_id в качестве условия для выполнения запроса, который я показывал внизу. Я предполагаю, что это метод arrayintersect но я не уверен, как его использовать.

 $values = Mysecondmodel::where('user_id', Auth::id()) ->first(); 

У меня это до сих пор:

  $subcommonarray = (array) $subcommon; $valuesarray = (array) $values; $a = $subcommonarray; $b = $valuesarray; $c = array_intersect_key($a, $b); if (count($c) > 0) { $newquery = Mysecondmodel::where(user_id, Auth::id()) ->first(); } 

Но это, я думаю, сравнивает ключи, а не ценности. Как сопоставить значения и и ключ вместе?

Ну, если $values и $subcommon являются действительными массивами, вы можете сравнить их с array_intersect функции array_intersect :

 $subjectlist_id = array_intersect($values, $subcommon); 

Это пойдет и будет искать сходства в значениях и построит еще один массив в переменной $subjectlist_id всех совпадающих значений между обоими массивами.

Хороший пример из документации php :

 $array1 = array(2, 4, 6, 8, 10, 12); $array2 = array(1, 2, 3, 4, 5, 6); $array3 = array_intersect($array1, $array2); var_dump($array3); 

У этого был бы такой массив:

 array(3) { [0]=> int(2) [1]=> int(4) [2]=> int(6) }