从两个数组中删除相同的值

时间:2012-08-24 12:44:17

标签: php arrays

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

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

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

对不起伙计们,显然我不懂数组。以下是底部的实际数组和建议结果。结果应为CoffeeGeneral

  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 个答案:

答案 0 :(得分:4)

您需要array_diff()array_merge()array_intersect()的组合:

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

See it working

答案 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));