2011-12-30 62 views
14

目前我有2陣列:察看2個陣列具有至少1個相等的值

array(1, 2, 3, 4); 
array(4, 5, 6, 7); 

如何檢查是否有在兩者ATLEAST一個相等的值? (上面的例子有1個相等的值=> 4,所以函數應該返回true)。

回答

30

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 
} 

array(1) { 
    [3]=> 
    int(4) 
} 
+0

http://es2.php.net/manual/en/function.array-intersect.php檢查了這一點。 – Rafee 2011-12-30 12:32:13

+0

then:'if(count($ c)> 0)doSomething();' – Alasdair 2011-12-30 12:32:40

+2

這是次優的,因爲計算完整的交集,但只要找到一個匹配就可以停止。但是,對於小型陣列,內置函數的效率可能會超出理論複雜性問題。如果你有大型陣列,你最好先對它們進行排序,然後做一個決鬥遍歷,從每個陣列中刪除最低點,直到兩者都爲空或者匹配。 – 2016-05-11 09:01:20

相關問題