我有两个数组,我只想从它们中得到唯一的值,所以我不只是想删除重复的,我实际上是想删除两个重复的。
如果我得到这样的两个数组:
$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;
}
我需要的最终输出是
$output = 20, 25, 100, 150;
有什么好办法能搞定吗?
8条答案
按热度按时间bd1hkmkf1#
其他的答案都是正确的,但是
array_diff
只在一个方向上工作--也就是说,它返回存在于给定的第一个数组中而不存在于任何其他数组中的值。你要做的是得到两个方向的差值,然后把差值合并在一起:
rjzwgtxy2#
我不是要贬低丹尼尔·范德斯鲁伊斯的回答,而是要补充一下......
你所寻找的基本上是数组的XOR运算,为此,“merlinyoda at dorproject. net”在http://php.net/manual/en/function.array-diff.php的注解中提供了以下例程:
此函数采用不同的方法来计算XOR。
ztyzrc3y3#
下面是实现这一点的代码。它也许可以优化,但你已经明白了:
要使用array_diff,您必须执行以下操作:
8hhllhi24#
尝试以下代码,它适用于数字、字符串和所有条件
以下逻辑仅适用于数字。
以下逻辑适用于任何条件
谢谢
kqhtkvqz5#
另一个好的解决方案是:
$array1 =数组(10,15,20,25);
$array2 =数组(10、15、100、150);
$输出=数组差异(数组合并($array1,$array2),数组交叉($array1,$array2));
// $输出将为(20,25,100,150);
b1zrtrql6#
array_diff()
(manual)函数可用于查找两个数组之间的差异:您可以向函数传递任意数量的数组,而不仅仅限于两个数组。
j8ag8udp7#
您可以使用
array_merge
和array_unique
,如下所示:这是简单易懂的。
cidc1ykv8#
参见array_diff()