PHP if in_array 用于多个值

Posted

技术标签:

【中文标题】PHP if in_array 用于多个值【英文标题】:PHP if in_array for multiple values 【发布时间】:2013-03-30 14:39:47 【问题描述】:

我有一个由 3 到 12 个值生成的数组,它根据帐户信息生成数组;

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

我想检查这个数组的多个值(大约 4 或 5 个),如果其中有任何一个,请执行 if 中的操作,我可以通过以下方式轻松地为一个值执行:

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); 
    

【问题讨论】:

您可以传递一个数组作为搜索值。 @all 如果您将in_array 数组作为指针传递,则仅当指针数组与大海捞针中的数组完全匹配时,它才会返回true。所以给 OP 扔骨头可能有点误导? see test case 谢谢你的使者,我对所有的答案/cmets 都有这个确切的问题。如果任何值都在数组中,我需要它是真的,如果它们是完全匹配的,建议只会按照你说的那样工作。 in_array multiple values的可能重复 【参考方案1】:

试试看是否有用:

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

【讨论】:

在 之前缺少一个 ) 但除此之外,这对我有用,谢谢!【参考方案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));

基本上循环通过 needle 并在大海捞针上运行它的数组。找到东西后返回 true,否则返回 false。

【讨论】:

以上是关于PHP if in_array 用于多个值的主要内容,如果未能解决你的问题,请参考以下文章

PHP 的 ArrayObject 是不是有 in_array 等价物?

php判断数组元素是不是存在

select 标签判断value值相同 就selected高亮

php函数in_array奇怪现象

In_array()函数弱比较

php 判断数组里是不是有某个值