0

2 つの配列があり、たとえば 2 つの間で同じ値を削除したい

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

しかし、明らかに、一致した値を単一の値として残して、重複を削除しただけです。これを行う簡単な方法はありますか、それとも関数を使用して行う必要がありますか?

申し訳ありませんが、明らかに私は配列を理解していません。これが実際の配列と下部の提案の結果です。結果は と である必要がCoffeeあり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 に答える