如果针是一个数组,我如何使用in_array?

Don*_*nia 47 php arrays search compare

我有2个数组,值将从数据库加载,下面是一个例子:

$arr1 = array(1,2,3);
$arr2 = array(1,2,3,4,5,6,7);
Run Code Online (Sandbox Code Playgroud)

我想要做的是检查是否所有的值$arr1的存在$arr2.上面的例子应该是一段TRUE时间:

$arr3 = array(1,2,4,5,6,7);
Run Code Online (Sandbox Code Playgroud)

比较$arr1$arr3将返回FALSE.

通常我使用in_array因为我只需要将单个值检查到数组中.但在这种情况下,in_array不能使用.我想看看是否有一种简单的方法来进行最小循环检查.

更新澄清.

第一个数组将是一个包含唯一值的集合.第二个数组可以包含重复的值.它们在处理之前都保证有阵列.

cle*_*tus 80

用途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
}
Run Code Online (Sandbox Code Playgroud)


Jus*_*son 28

您可以使用array_intersectarray_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
}
Run Code Online (Sandbox Code Playgroud)

但是,如果您不需要使用交集的结果(这似乎是您的情况),则使用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
}
Run Code Online (Sandbox Code Playgroud)


Sam*_*152 5

您可以尝试使用array_diff()函数来查找两个数组之间的差异,这可能会对您有所帮助.我想澄清你的意思是,第一个数组中的所有值必须在第二个数组中,但不是相反.