我有两个数组,我想删除两者之间的相同值,例如
$array1 = array(1,2,3,4,5,6)
$array2 = array(5,6,7,8,9,10)
会得到结果
$array = array(1,2,3,4,7,8,9,10)
我试过
$array = array_unique(array_merge($array1, $array2));
但很明显,只删除了重复项,留下匹配的值,作为单个值。有没有一种快速的方法可以做到这一点,还是必须使用函数来完成?
对不起伙计们,显然我不懂数组。以下是底部的实际数组和建议结果。结果应为Coffee
和General
。
array(4) {
[0]=>
NULL
[1]=>
string(4) "Milk"
[3]=>
string(6) "Coffee"
[6]=>
string(8) "Sweetner"
}
array(4) {
[0]=>
NULL
[1]=>
string(8) "Sweetner"
[3]=>
string(4) "MIlk"
[9]=>
string(7) "General"
}
array(4) {
[1]=>
string(4) "Milk"
[2]=>
string(6) "Coffee"
[6]=>
string(4) "MIlk"
[7]=>
string(7) "General"
}
答案 0 :(得分:4)
您需要array_diff()
,array_merge()
和array_intersect()
的组合:
$array = array_diff(
array_merge($array1, $array2),
array_intersect($array1, $array2)
);
答案 1 :(得分:2)
尝试使用array_intersect
$intersect = array_intersect($array1, $array2);
$array = array_diff(array_merge($array1, $array2), $intersect);
答案 2 :(得分:1)
您希望合并两个数组的差异,其中“差异”表示“其他数组中不存在的值”:
$array = array_merge(array_diff($array1, $array2), array_diff($array2, $array1));
答案 3 :(得分:0)
仅用于娱乐,当数组仅包含字符串和整数值时:
$array = array_keys(array_flip($array1) + array_flip($array2));