我有2个数组,可能看起来像这样:
$a1 = array('c','b','a');
$a2 = array('a', 'b', 'c', 'd', 'e');
我需要以某种方式检查$a1
中是否存在$a2
中的每个值。
我查看了array_diff
和array_intersect
,但看不出它们是如何被使用的,因为它们只返回存在且不存在的值。
答案 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;
}