У меня есть 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
не может использоваться. Я хотел бы видеть, существует ли простой способ сделать сверение с минимальным цикличным выполнением.
ОБНОВЛЕНИЕ для разъяснения.
Первый массив будет набором, который содержит уникальные значения. Второй массив может содержать дублированные значения. Им оба гарантируют массив перед обработкой.
Используйте 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
}
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
}
Вы можете попробовать использовать функцию array_diff () , чтобы найти разницу между двумя массивами, это может вам помочь. Я думаю, чтобы прояснить, вы имеете в виду, что все значения в первом массиве должны быть во втором массиве, но не наоборот.