PHP检查数组是否包含来自另一个数组的所有数组值

$all = array ( 0 => 307, 1 => 157, 2 => 234, 3 => 200, 4 => 322, 5 => 324 ); $search_this = array ( 0 => 200, 1 => 234 ); 

我想知道是否$ all包含所有的$ search_this值并返回true或false。 有什么想法吗?

看array_intersect() 。

 $containsSearch = count(array_intersect($search_this, $all)) == count($search_this); 

以前的答案都是比他们需要做的更多的工作。 只要使用array_diff 。 这是最简单的方法:

 $containsAllValues = !array_diff($search_this, $all); 

这就是你所要做的。

与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 

我想你正在寻找相交function

 array array_intersect ( array $array1 , array $array2 [, array $ ... ] ) 

array_intersect()返回包含所有参数中存在的array1的所有值的数组。 请注意,密钥已保存。

http://www.php.net/manual/en/function.array-intersect.php

这个怎么样:

function array_keys_exist($searchForKeys = array(), $searchableArray) { $searchableArrayKeys = array_keys($searchableArray); return count(array_intersect($searchForKeys, $searchableArrayKeys)) == count($searchForKeys); }