PHP中是否有任何函数可以从两个或多个数组中提供一组不常见的值?
例如:
$array1 = array( "green", "red", "blue");
$array2 = array( "green", "yellow", "red");
....
$result = Function_Needed($array1, $array2,...);
print_r($result);
应该给出输出:
array("blue", "yellow", ...);
答案 0 :(得分:7)
$result = array_merge(array_diff($array1, $array2), array_diff($array2, $array1));
对于多个阵列,将其与回调和array_reduce
:
function unique(&$a, $b) {
return $a ? array_merge(array_diff($a, $b), array_diff($b, $a)) : $b;
}
$arrays = array(
array('green', 'red', 'blue'),
array('green', 'yellow', 'red')
);
$result = array_reduce($arrays, 'unique');
答案 1 :(得分:2)
尝试array_diff
。
答案 2 :(得分:2)
$result = array_diff($array1, $array2) + array_diff($array2, $array1);
答案 3 :(得分:0)
这应该这样做。它可以扩展为使用两个以上的数组。它基本上计算公共密钥出现次数并返回计数为1的那些:
$a = array('yellow', 'blue', 'red', 'green');
$b = array('blue', 'purple', 'green');
function unintersect($a, $b)
{
$x = array_fill_keys($a, 1);
foreach ($b as $v) {
$x[$v]++; // this might trigger warning
}
return array_keys(array_filter($x, function($v) {
return $v === 1;
}));
}
print_r(unintersect($a, $b));
返回:
Array
(
[0] => yellow
[1] => red
[2] => purple
)