更快速地查看数组是否包含指定值之外的值

时间:2014-03-20 20:35:16

标签: php

我有一个数组,其中每个元素都有一个带有多个ID的子数组。循环遍历数组时,我想检查子数组是否包含除给定数组之外的任何元素。

例如,每当其中一个子阵列有“TESTID”以外的任何ID时,我都会回答“是”。

我可以通过遍历子数组来实现这一点,但我想知道一种不需要双循环的方法。

这是当前的代码:

foreach ($elements as $element) {
    ...

    if (besidesInArray('TESTID',$element['ids'])) {
        //operations
    } else {
        //element only has 'TESTID'
    }

...
}
...

function besidesInArray($needle, $haystack) {
    foreach ($haystack as $hay) {
        if($hay != $needle) {
            return TRUE;
        }
    }

    return FALSE;
}

虽然这段代码有效,但我想看看是否有更优雅的解决方案。

3 个答案:

答案 0 :(得分:1)

您可以使用in_array()功能来实现此目标

foreach($array as $key => $subarray)
{
    if(in_array("TESTID", $subarray))
    {
        //found
    } else {
       //not found
    }
}

答案 1 :(得分:0)

preg_grep

TESTID但反转grep以便它返回不匹配的条目。

foreach($array as $subarray) {
    if(preg_grep("/TESTID/", $subarray, PREG_GREP_INVERT)) {
        echo 'Yes'; //others found
    }
}

TESTID可能是var。男人我爱一些preg_grep

答案 2 :(得分:-1)

  find = implode(')|(',$mypatternarray);
   find.="(".find.")";

foreach($subarray as $subar){
        if(preg_match("find",$subar)>0)){
        echo "id found";
        }

}