2012-04-23 49 views
0

示例:In_array但具有更多值

$ array = array('hi','hello','bye');

如何检查数组中是否存在两个或更多值中的至少一个值?

,如:

如果(in_array( 'HI',$阵列)|| in_array( '你好',$阵列))...

但一张支票?可以做到吗?

回答

6
if(count(array_intersect(array('hi','hello','bye'), $array))) { 
    ... 
} 
+0

或者说:'如果(计数(array_intersect(阵列( '喜', '你好', '再见'),$阵列)) > = 2)' – ghoti 2012-04-23 23:13:35

+1

否。如果至少存在一个,他希望返回true,而不是至少存在两个。 – Interrobang 2012-04-23 23:18:19

+1

+1这很好。但是,计数是不必要的。评估为布尔值的非空数组始终为真。 – goat 2012-04-23 23:22:00

1
function in_array2($ary1,$ary2){ 
    return count(array_intersect($ary1,$ary2)) > 0; 
} 

简单,利用array_intersect

1

看看preg_grep,它会返回一个数组中符合预定义模式的条目(例如在您的示例中为'/^(hi|hello)$/)。

E.g.

if (count(preg_grep('^/(hi|hello)$/',$array))) 
{ 
    // your code 
} 
1

使用array_intersect()...即

$array = array('hi', 'hello', 'bye'); 
if(count(array_intersect($array, array('search', 'for', 'values')))>0) .... 
+0

grr ...太慢了 – 2012-04-23 23:15:39