首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >in_array多个值

in_array多个值
EN

Stack Overflow用户
提问于 2011-09-25 07:49:03
回答 6查看 137.8K关注 0票数 130

如何检查多个值,例如:

代码语言:javascript
复制
$arg = array('foo','bar');

if(in_array('foo','bar',$arg))

这是一个例子,所以你可以更好地理解,我知道它不会起作用。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-09-25 07:51:51

将目标与干草堆相交,并确保相交恰好等于目标:

代码语言:javascript
复制
$haystack = array(...);

$target = array('foo', 'bar');

if(count(array_intersect($haystack, $target)) == count($target)){
    // all of $target is in $haystack
}

请注意,您只需验证结果交集的大小与目标值数组的大小相同,即可确定$haystack$target的超集。

要验证$haystack中是否也存在$target中的至少一个值,可以执行以下检查:

代码语言:javascript
复制
 if(count(array_intersect($haystack, $target)) > 0){
     // at least one of $target is in $haystack
 }
票数 218
EN

Stack Overflow用户

发布于 2012-06-15 04:08:03

作为一名开发人员,您可能应该开始学习集合操作(差、并、交)。你可以把你的数组想象成一个“集合”,而你正在搜索的密钥则是另一个。

检查是否所有的针都存在

代码语言:javascript
复制
function in_array_all($needles, $haystack) {
   return empty(array_diff($needles, $haystack));
}

echo in_array_all( [3,2,5], [5,8,3,1,2] ); // true, all 3, 2, 5 present
echo in_array_all( [3,2,5,9], [5,8,3,1,2] ); // false, since 9 is not present

检查针头是否存在

代码语言:javascript
复制
function in_array_any($needles, $haystack) {
   return !empty(array_intersect($needles, $haystack));
}

echo in_array_any( [3,9], [5,8,3,1,2] ); // true, since 3 is present
echo in_array_any( [4,9], [5,8,3,1,2] ); // false, neither 4 nor 9 is present
票数 214
EN

Stack Overflow用户

发布于 2011-09-25 07:51:07

代码语言:javascript
复制
if(in_array('foo',$arg) && in_array('bar',$arg)){
    //both of them are in $arg
}

if(in_array('foo',$arg) || in_array('bar',$arg)){
    //at least one of them are in $arg
}
票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7542694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档