确定Array 1是否包含Array 2中的所有值

时间:2011-12-09 09:44:09

标签: php arrays

我有2个数组,可能看起来像这样:

$a1 = array('c','b','a');
$a2 = array('a', 'b', 'c', 'd', 'e');

我需要以某种方式检查$a1中是否存在$a2中的每个值。

我查看了array_diffarray_intersect,但看不出它们是如何被使用的,因为它们只返回存在且不存在的值。

4 个答案:

答案 0 :(得分:2)

我不确定你的意思是“分别出现”但是array_diff是你正在寻找的功能。只需确保以正确的顺序将数组传递给函数。尝试:

// result = no
echo count( array_diff( $a1, $a2 ) ) ? 'yes' : 'no';
// result = yes
echo count( array_diff( $a2, $a1 ) ) ? 'yes' : 'no';

答案 1 :(得分:1)

看看这个:

http://php.net/manual/de/function.in-array.php

好的,我会更清楚:

如果针在大海捞针中,函数in_array()会给出一个布尔值。 所以,这样的一行对你有用:

$return = in_array($a1, $a2, true);

如果$a1$a2中,则函数返回true,否则返回false。第三个参数激活严格搜索,因此即使错误是正确的,也不会返回。

答案 2 :(得分:0)

您可以使用类似

的内容
sizeof(array_intersect($a1, $a2)) == sizeof($a1)

答案 3 :(得分:0)

function has_all_values($base, $comparing) {
    foreach($comparing as $value) {
        if(!in_array($base, $value))
            return false;
    }
    return true;
}