$all = array
(
0 => 307,
1 => 157,
2 => 234,
3 => 200,
4 => 322,
5 => 324
);
$search_this = array
(
0 => 200,
1 => 234
);
Run Code Online (Sandbox Code Playgroud)
我想知道$ all是否包含所有$ search_this值并返回true或false.有什么想法吗?
orr*_*rrd 192
以前的答案都比他们需要做的更多.只需使用array_diff.这是最简单的方法:
$containsAllValues = !array_diff($search_this, $all);
Run Code Online (Sandbox Code Playgroud)
这就是你要做的一切.
jas*_*bar 149
$containsSearch = count(array_intersect($search_this, $all)) == count($search_this);
Run Code Online (Sandbox Code Playgroud)
使用array_diff稍微短一些
$musthave = array('a','b');
$test1 = array('a','b','c');
$test2 = array('a','c');
$containsAllNeeded = 0 == count(array_diff($musthave, $test1));
// this is TRUE
$containsAllNeeded = 0 == count(array_diff($musthave, $test2));
// this is FALSE
Run Code Online (Sandbox Code Playgroud)
我认为你正在寻找相交函数
array array_intersect ( array $array1 , array $array2 [, array $ ... ] )
Run Code Online (Sandbox Code Playgroud)
array_intersect()
返回一个数组,其中包含所有参数中存在的 array1 的所有值。请注意,密钥会被保留。
http://www.php.net/manual/en/function.array-intersect.php