2013-04-08 71 views
6

我有一个在3到12之间的任何值生成的数组,它从帐户信息生成数组;PHP如果in_array为多个值

$result = $ad->user()->groups($user['username']); 

我要检查这个数组的多个值(约4或5),如果其中任何一个的都在上面做什么的里面,如果,我可以通过一个值做到这一点很容易:

if (in_array("abc",$result)) { $this->login_session($user); } 

有没有一种简单的方法来检查多个值这一个数组中它比其他连续OR:

if (in_array("abc",$result) || in_array("123",$result) || in_array("def",$result) || in_array("456",$result)) { 
    $this->login_session($user); 
    } 
+0

您可以传递一个数组作为搜索值。 – Voitcus 2013-04-08 13:32:24

+4

@all如果你将'in_array'数组作为针,它只返回true,如果needle数组与精确匹配干草堆中的数组。所以要抛出骨头,这可能有点误导? [见测试用例](http://codepad.org/fLKLfd0K) – Emissary 2013-04-08 13:45:25

+1

谢谢Emissary,我对所有的答案/评论都有这个确切的问题。如果任何值都在数组中,那么我需要它是正确的,但是建议仅在您说的完全匹配时才起作用。 – toups 2013-04-08 13:50:12

回答

16

尝试,看看这是否是有帮助的:

if(array_intersect($result, array('abc', '123', 'def'))) { 
    $this->login_session($user); 
} 
+0

在{{但除此之外,这对我工作,谢谢! – toups 2013-04-08 14:32:04

2

这应该是你所追求的:

$a = array(1,2,3,4,5); 

$b = array(6,8); 

function is_in_array($needle, $haystack) { 

    foreach ($needle as $stack) { 

     if (in_array($stack, $haystack)) { 
      return true; 
     } 
    } 

    return false; 
} 

var_dump(is_in_array($b, $a)); 

通过针基本上循环,并在草堆它的阵列中运行的。返回true,一旦发现,否则返回false。