PHPで配列を結合するには演算子「+」(プラス)でつなぐ方法と配列関数array_mergeを使う方法があります。
挙動についてまとめました。
通常の配列&プラス
「array(1,2,3)」のように添字が0,1,2となる配列を通常の配列と呼ぶことにします。
$a=array(1,2);
$b=array(5,6,7);
$c=$a+$b;
print_r($c);
$b=array(5,6,7);
$c=$a+$b;
print_r($c);
結果は次のとおり。
Array
(
[0] => 1
[1] => 2
[2] => 7
)
(
[0] => 1
[1] => 2
[2] => 7
)
通常の配列の場合、添字が同じ要素は上書きされません。同じ添字がない要素は追加されます。
通常の配列&array_merge
$a=array(1,2);
$b=array(5,6);
$c=array_merge($a,$b);
print_r($c);
$b=array(5,6);
$c=array_merge($a,$b);
print_r($c);
結果は次のとおり。
Array
(
[0] => 1
[1] => 2
[2] => 5
[3] => 6
)
(
[0] => 1
[1] => 2
[2] => 5
[3] => 6
)
通常の配列の場合、前の配列の後に追加されます。添字は改められます。
連想配列&プラス
添字が文字列の場合、連想配列と呼びます。
$a=array("x"=>1,"y"=>2);
$b=array("x"=>5,"z"=>6);
$c=$a+$b;
print_r($c);
$b=array("x"=>5,"z"=>6);
$c=$a+$b;
print_r($c);
結果は次のとおり。
Array
(
[x] => 1
[y] => 2
[z] => 6
)
(
[x] => 1
[y] => 2
[z] => 6
)
連想配列をプラスでつなぐと通常の配列と同様に同じ添字の要素は上書きされません。
連想配列&array_merge
$a=array("x"=>1,"y"=>2);
$b=array("x"=>5,"z"=>6);
$c=array_merge($a,$b);
print_r($c);
$b=array("x"=>5,"z"=>6);
$c=array_merge($a,$b);
print_r($c);
結果は次のとおり。
Array
(
[x] => 5
[y] => 2
[z] => 6
)
(
[x] => 5
[y] => 2
[z] => 6
)
連想配列でarray_mergeを使うと同じ添字の要素は上書きされます。
コメント