如果是$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');
如果没有难以跟踪的令人讨厌的嵌套循环,这样做的好方法是什么?
答案 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))
{
...
}