2011-12-09 32 views
0

所有值我有2个数组这可能是这个样子:确定阵列1是否含有来自阵列2

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

我需要以某种方式检查$a1每个值是否出现在$a2

我查看了array_diffarray_intersect,但无法看到它们如何使用,因为它们只返回分别存在且不存在的值。

回答

2

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

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

这就是我一直在寻找的,谢谢!我想我是在第一次尝试时按错误顺序传递给他们的 –

1

看看这个:

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

好吧,我可以很清楚的:

的函数in_array()给你一个布尔值,如果针在干草堆。 所以,这样的行会为你工作:

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

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

+0

不是一个答案.. –

+0

由于PHP 4.2 in_array()采用阵列的所有参数。 – Tobias

+0

现在好多了。 –

0

您可以使用类似

sizeof(array_intersect($a1, $a2)) == sizeof($a1) 
0
function has_all_values($base, $comparing) { 
    foreach($comparing as $value) { 
     if(!in_array($base, $value)) 
      return false; 
    } 
    return true; 
}