Как я могу использовать in_array, если игла представляет собой массив?

У меня есть 2 массива, значение будет загружено из базы данных, ниже приведен пример:

$arr1 = array(1,2,3); $arr2 = array(1,2,3,4,5,6,7); 

Я хочу, чтобы проверить, существуют ли все значения в $arr1 в $arr2 . Вышеприведенный пример должен иметь значение TRUE то время как:

 $arr3 = array(1,2,4,5,6,7); 

сравнение $arr1 с $arr3 вернет FALSE .

Обычно я использую in_array потому что мне нужно только проверить одно значение в массиве. Но в этом случае in_array не может быть использован. Я хотел бы посмотреть, есть ли простой способ сделать проверку с минимальным циклом.

ОБНОВЛЕНИЕ для уточнения.

Первый массив будет набором, содержащим уникальные значения. Второй массив может содержать дублирующиеся значения. Перед обработкой они гарантируют массив.

Solutions Collecting From Web of "Как я могу использовать in_array, если игла представляет собой массив?"

Используйте array_diff() :

 $arr1 = array(1,2,3); $arr2 = array(1,2,3,4,5,6,7); $arr3 = array_diff($arr1, $arr2); if (count($arr3) == 0) { // all of $arr1 is in $arr2 } 

Вы можете использовать array_intersect или array_diff :

 $arr1 = array(1,2,3); $arr2 = array(1,2,3,4,5,6,7); if ( $arr1 == array_intersect($arr1, $arr2) ) { // All elements of arr1 are in arr2 } 

Однако, если вам не нужно использовать результат пересечения (который, кажется, ваш случай), более простое и экономичное время использовать array_diff:

 $arr1 = array(1,2,3); $arr2 = array(1,2,3,4,5,6,7); $diff = array_diff($arr1, $arr2); if ( empty($diff) ) { // All elements of arr1 are in arr2 } 

Вы можете попробовать использовать функцию array_diff (), чтобы найти разницу между двумя массивами, это может вам помочь. Я думаю, чтобы вы поняли, что все значения в первом массиве должны быть во втором массиве, но не наоборот.

В моем конкретном случае мне нужно было проверить, была ли пара идентификаторов обработана до или нет. Так что простой array_diff() не работал для меня.

Вместо этого я сгенерировал ключи из идентификаторов, отсортированных по алфавиту, и использовал их с помощью in_array:

 <?php $pairs = array(); // ... $pair = array($currentId, $id); sort($pair); $pair = implode('-', $pair); if (in_array($pair, $pairs)) { continue; } $pairs[$pair] = $pair; 

Это, вероятно, не оптимальное решение, но я просто нуждался в нем для того, чтобы грязный скрипт исполнялся один раз.