明日になったら本気出せる

底辺Web系エンジニアの日記

配列の結合 [PHP]

主に array_merge() と +演算子の違いについて。
ぐぐればいっぱい出てくるんだけどよく忘れるので備忘録。

<?php
// PHP 5.4.17
$array1 = array(
    'hoge' => 'udon', 
    0,
    1,
);

$array2 = array(
    1 => 'a',
    'b',
    'hoge' => 'soba', 
    'fuga' => 'ra-men',
);

var_export(array_merge($array1, $array2));
var_export($array1 + $array2);


■array_merge()の場合

array (
  'hoge' => 'soba',
  0 => 0,
  1 => 1,
  2 => 'a',
  3 => 'b',
  'fuga' => 'ra-men',
)
  • インデックスが重複した場合は後勝ち
  • 但し、インデックスが数値の場合は振り直しを行い追加する


■+演算子の場合

array (
  'hoge' => 'udon',
  0 => 0,
  1 => 1,
  2 => 'b',
  'fuga' => 'ra-men',
)
  • インデックスが重複した場合は先勝ち
  • 前の配列に重複インデックスがない場合のみ、後の配列の要素を追加する


どうも分かりづらいなぁと思うのは僕だけかな?