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

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

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

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

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

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

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

ОБНОВЛЕНИЕ для разъяснения.

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

47
задан Ben Fortune 2 July 2015 в 09:27
поделиться

3 ответа

Используйте 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
}
80
ответ дан 26 November 2019 в 19:26
поделиться
The deepest branch from a node is:
    the longest of the respective deepest branches from each child node
    prepended with the current node.
-121--5044318-

Можно использовать массив _ пересечения или массив _ 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
}
28
ответ дан 26 November 2019 в 19:26
поделиться

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

5
ответ дан 26 November 2019 в 19:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: