配列の後に配列を追加するのはarray_mergeでよかった(PHP)
PHPの配列マージには結構種類があって
+
で連結するとかarrarray_merge
とかarray_merge_recursive
とか
キーが同じ配列同士の2つの配列をマージしたい場合、
$array_1 +$array_2
だと、同じキーであれば$array_1
に食われてしまう。
+
した場合
$array_1 = array(0=>'value0', 1=>'value1', 2=>'value2'); $array_2 = array(0=>'value3', 1=>'value4', 2=>'value5'); var_dump($array_1 + $array_2); /* 結果 array(3) { [0]=> string(6) "value0" [1]=> string(6) "value1" [2]=> string(6) "value2" } */
array_merge
かarray_merge_recursive
を使う
var_dump(array_merge($array_1, $array_2)); var_dump(array_merge_recursive($array_1, $array_2)); /* 結果 array(6) { [0]=> string(6) "value0" [1]=> string(6) "value1" [2]=> string(6) "value2" [3]=> string(6) "value3" [4]=> string(6) "value4" [5]=> string(6) "value5" } array(6) { [0]=> string(6) "value0" [1]=> string(6) "value1" [2]=> string(6) "value2" [3]=> string(6) "value3" [4]=> string(6) "value4" [5]=> string(6) "value5" }
# array_merge
とarray_merge_recursive
のちがい
キーを文字列に変えてみた場合が顕著
$array_1 = array('a'=>'value0', 'b'=>'value1', 'c'=>'value2'); $array_2 = array('a'=>'value3', 'b'=>'value4', 'c'=>'value5'); var_dump(array_merge($array_1, $array_2)); /*結果 array(3) { ["a"]=> string(6) "value3" ["b"]=> string(6) "value4" ["c"]=> string(6) "value5" } */ var_dump(array_merge_recursive($array_1, $array_2)); /*結果 array(3) { ["a"]=> array(2) { [0]=> string(6) "value0" [1]=> string(6) "value3" } ["b"]=> array(2) { [0]=> string(6) "value1" [1]=> string(6) "value4" } ["c"]=> array(2) { [0]=> string(6) "value2" [1]=> string(6) "value5" } } */ var_dump($array_1 + $array_2); /*結果 array(3) { ["a"]=> string(6) "value0" ["b"]=> string(6) "value1" ["c"]=> string(6) "value2" } */