$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
。我想看看是否有一种简单的方法可以使用最小的循环进行检查。
aupdate以澄清
第一个数组将是包含唯一值的集合。第二个数组可以包含重复的值。它们都可以保证在处理前一个数组。
使用
in_array
:
in_array
$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
}
您可以尝试使用
函数来找到两个数组之间的区别,这可能会对您有所帮助。我认为要澄清您的意思是,第一个数组中的所有值都必须在第二个数组中,而不是相反。
在我的特定情况下,我需要检查是否在处理之前处理了一对ID。如此简单
$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()
使用array_unique的其他解决方案,以检查第一个数组是否在另一个数组上。
<?php
$pairs = array();
// ...
$pair = array($currentId, $id);
sort($pair);
$pair = implode('-', $pair);
if (in_array($pair, $pairs)) {
continue;
}
$pairs[$pair] = $pair;