0

我有两个数组,例如我想删除两者之间的相同值

  $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));

但很明显,刚刚删除的重复项将匹配的值保留为单个值。有没有一种快速的方法可以做到这一点,还是必须使用一个函数来完成?

对不起,伙计们,显然我不懂数组。这是底部的实际数组和建议结果。结果应该是Coffeeand 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"
  }
4

4 回答 4

4

和的组合array_diff()是您在这里需要的:array_merge()array_intersect()

$array = array_diff(
  array_merge($array1, $array2),
  array_intersect($array1, $array2)
);

看到它工作

于 2012-08-24T12:48:38.773 回答
2

尝试array_intersect

$intersect = array_intersect($array1, $array2);
$array     = array_diff(array_merge($array1, $array2), $intersect);
于 2012-08-24T12:48:44.420 回答
1

您希望合并两个数组的差异,其中“差异”表示“另一个数组中不存在的值”:

$array = array_merge(array_diff($array1, $array2), array_diff($array2, $array1));
于 2012-08-24T12:49:09.713 回答
0

只是为了好玩,并且当您的数组仅包含字符串和整数值时:

$array = array_keys(array_flip($array1) + array_flip($array2));

于 2012-08-24T12:47:51.153 回答