我有2个阵列,我只想从它们那里获得唯一值。因此,我不仅试图删除重复项,而且实际上是在尝试删除两个重复项。
因此,如果我得到这样的两个阵列:
$array1 = array();
$array2 = array();
foreach ($values1 as $value1) { //output: $array1 = 10, 15, 20, 25;
$array1[] = $value1;
}
foreach ($values2 as $value2) { //output: $array2 = 10, 15, 100, 150;
$array2[] = $value2;
}
我正在寻找的最终输出IS
$output = 20, 25, 100, 150;
完成此操作的任何整洁方法?
$array1 = array(10, 15, 20, 25);
$array2 = array(10, 15, 100, 150);
$output = array_merge(array_diff($array1, $array2), array_diff($array2, $array1));
// $output will be (20, 25, 100, 150);
您要寻找的是基本上是数组的XOR操作。 为此,“ dorproject dot net的merlinyoda”在评论中提供了以下例程。
<?php
function array_xor ($array_a, $array_b) {
$union_array = array_merge($array_a, $array_b);
$intersect_array = array_intersect($array_a, $array_b);
return array_diff($union_array, $intersect_array)
}
?>
trory遵循代码,它适用于数字,字符串和每个条件。
以下逻辑只能适用于numbers
。
$array1 = array(10, 15, 20, 25);
$array2 = array(10, 15, 100, 150);
$output = array_merge(array_diff($array1, $array2), array_diff($array2, $array1));
$a1 = array('[email protected]');
$a2 = array('[email protected]', '[email protected]');
$new_array = array_merge($a1, $a2);
$unique = array_unique($new_array);
在这里是执行此操作的代码。它可能可以优化,但是您会得到一个想法:
$array1 = array(10, 15, 20, 25);
$array2 = array(10, 15, 100, 150);
$new_array = array();
foreach($array1 as $value) {
if(!in_array($value, $array2)) {
array_push($new_array, $value);
}
}
foreach($array2 as $value) {
if(!in_array($value, $array1)) {
array_push($new_array, $value);
}
}
print_r($new_array);
要使用array_diff,您必须做:
$array1 = array(10, 15, 20, 25);
$array2 = array(10, 15, 100, 150);
$out1 = array_diff($array1, $array2);
$out2 = array_diff($array2, $array1);
$output = array_merge($out1, $out2);
print_r($output);
$ array1 = array(10,15,20,25);
$ array2 = array(10,15,100,150);
$ output = array_diff(array_merge($ array1,$ array2),array_intersect($ array1,$ array2));
// $输出将为(20、25、100、150);
(
手动)函数可用于查找两个数组之间的差异:
array_diff()
您可以将任意多的数组传递到该功能,而不仅限于两个数组。
您可以使用
$array1 = array(10, 20, 40, 80);
$array2 = array(10, 20, 100, 200);
$diff = array_diff($array1, $array2);
// $diff = array(40, 80, 100, 200);