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_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
}
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)
| 归档时间: |
|
| 查看次数: |
33692 次 |
| 最近记录: |