PHP

重複した値を持つ配列の結合

重複した値を持つ配列を結合する場合に、重複した値を削除して新しい配列を作りたかった。
(+演算子とarray_mergeではうまくいかないことは後述)

これでできる

$array1 = [
    'b',
    'a',
    'c',
];
$array2 = [
    'a',
    'd',
];

$results = array_unique(array_merge($array1, $array2));

var_dump($results);

/* 結果 */
array(4) {
  [0]=>
  string(1) "b"
  [1]=>
  string(1) "a"
  [2]=>
  string(1) "c"
  [4]=>
  string(1) "d"
}

補足:+演算子とarray_mergeではどうなるか

$array1 = [
    'b',
    'a',
    'c',
];
$array2 = [
    'a',
    'd',
];

$results1 = $array1 + $array2;
$results2 = array_merge($array1, $array2);

var_dump($results1);
var_dump($results2);

結果

+演算子はキーの被った値が残る。
array_mergeは和集合的に結合してキーが振りなおされる。

array(3) {
  [0]=>
  string(1) "b"
  [1]=>
  string(1) "a"
  [2]=>
  string(1) "c"
}
array(5) {
  [0]=>
  string(1) "b"
  [1]=>
  string(1) "a"
  [2]=>
  string(1) "c"
  [3]=>
  string(1) "a"
  [4]=>
  string(1) "d"
}