检查2个数组是否至少有1个相等的值

21 php

目前我有2个数组:

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

如何检查两者中是否至少有一个相等的值?(上面的例子有1个相等的值=> 4,所以函数应该返回true).

mac*_*ohn 39

array_intersect()

返回一个数组,其中包含所有参数中存在的array1的所有值.请注意,密钥保留

$a = array(1, 2, 3, 4);
$b = array(4, 5, 6, 7);
$c = array_intersect($a, $b);
if (count($c) > 0) {
    var_dump($c);
    //there is at least one equal value
}
Run Code Online (Sandbox Code Playgroud)

你得到

array(1) {
  [3]=>
  int(4)
}
Run Code Online (Sandbox Code Playgroud)

  • 这是次优的,因为计算了完整的交点,但只要找到一个匹配就可以停止.但是,对于小型阵列,内置函数的效率可能会超过理论上的复杂性问题.如果您有大型阵列,您最好对它们进行排序,然后进行决斗遍历,从每个阵列中移除最低值,直到两者都空或者匹配为止. (5认同)
  • 嗯......只是`if(array_intersect($ a,$ b))` (3认同)