所有值我有2个数组这可能是这个样子:确定阵列1是否含有来自阵列2
$a1 = array('c','b','a');
$a2 = array('a', 'b', 'c', 'd', 'e');
我需要以某种方式检查$a1
每个值是否出现在$a2
。
我查看了array_diff
和array_intersect
,但无法看到它们如何使用,因为它们只返回分别存在且不存在的值。
所有值我有2个数组这可能是这个样子:确定阵列1是否含有来自阵列2
$a1 = array('c','b','a');
$a2 = array('a', 'b', 'c', 'd', 'e');
我需要以某种方式检查$a1
每个值是否出现在$a2
。
我查看了array_diff
和array_intersect
,但无法看到它们如何使用,因为它们只返回分别存在且不存在的值。
我不确定你是什么意思的“现在分别”,但array_diff是你正在寻找的功能。只要确保按照正确的顺序将数组传递给函数。尝试:
// result = no
echo count(array_diff($a1, $a2)) ? 'yes' : 'no';
// result = yes
echo count(array_diff($a2, $a1)) ? 'yes' : 'no';
看看这个:
http://php.net/manual/de/function.in-array.php
好吧,我可以很清楚的:
的函数in_array()给你一个布尔值,如果针在干草堆。 所以,这样的行会为你工作:
$return = in_array($a1, $a2, true);
如果$a1
是$a2
该函数返回true,否则为false。第三个参数激活严格的搜索,所以即使错误是正确的,也不会返回。
您可以使用类似
sizeof(array_intersect($a1, $a2)) == sizeof($a1)
function has_all_values($base, $comparing) {
foreach($comparing as $value) {
if(!in_array($base, $value))
return false;
}
return true;
}
这就是我一直在寻找的,谢谢!我想我是在第一次尝试时按错误顺序传递给他们的 –