array_a是否包含array_b的所有元素

时间:2011-02-09 12:49:40

标签: php arrays

如果是$array_b

$array_b = array('red', 'green', 'blue'); 

将它与$array_a进行比较的有效方法是什么,并获得一个关于$array_a是否包含上述$array_b的所有元素的布尔值。

这是我想要的输出

//false, because it's missing the red from `$array_b`
$array_a = array('green', 'blue'); 

//true, because it contains all 3 from `$array_b`
$array_a = array('red', 'green', 'blue');     

//true, because it contains all 3 from `$array_b`
//even though there's an extra orange and cyan
$array_a = array('red', 'green', 'blue', 'orange', 'cyan'); 

如果没有难以跟踪的令人讨厌的嵌套循环,这样做的好方法是什么?

3 个答案:

答案 0 :(得分:4)

if (count(array_intersect($array_a, $array_b)) == count($array_b)) {
    ...
}

或作为功能

function function_name($array_a, $array_b) {
    return count(array_intersect($array_a, $array_b)) == count($array_b);
}

答案 1 :(得分:2)

$boolean = count(array_diff($array_b, $array_a)) == 0 ? true : false;

答案 2 :(得分:0)

empty()count()快,而差异比相交快。

$diff=array_diff($array_a, $array_b);
if(empty($diff))
{
    ...
}