array_mergeによる配列結合で数値インデックスが変わってしまうとき

スポンサーリンク

2つ以上の配列を結合する関数にarray_mergeがありますが、この関数では結合する配列の数値インデックスを0から始まるように新たに割り当てる仕様になっています。

PHPマニュアル:array_merge

結合する配列で明示的に数値インデックスが指定されている場合、意図しない値に変わってしまう場合があるので注意が必要です。

<?php
$ar1 = array("1"=>"鈴木", "2"=>"田中");
$ar2 = array("3"=>"高橋", "4"=>"小林");
print_r(array_merge($ar1, $ar2));
?>

上記の配列では1から始まる数値インデックスが明示的に指定されていますが実行後は0から始まる連番が新たに割り振られています。

○実行結果

Array ( [0] => 鈴木 [1] => 田中 [2] => 高橋 [3] => 小林 ) 
文字のインデックスは保持されますが、同じインデックスは上書きされます。
array_merge関数と配列結合演算子「+」による重複キーの扱いの違い

数値インデックスを維持したまま配列を結合する場合は配列結合演算子「+」を使います。

<?php
$ar1 = array("1"=>"鈴木", "2"=>"田中");
$ar2 = array("3"=>"高橋", "4"=>"小林");
print_r($ar1 + $ar2);
?>

○実行結果

Array ( [1] => 鈴木 [2] => 田中 [3] => 高橋 [4] => 小林 ) 

PHPの基礎が身に付いたかチェックするなら

PHP「直す力」養成ドリル
スポンサーリンク