【PHP】配列・連想配列を結合し上書きする関数|array_merge()・array_replace()など

今回は、PHPで配列・連想配列を結合し上書きする関数のまとめとなります。

【PHP】配列・連想配列を結合し上書きする関数

キーが同じ「文字列」の場合に上書き|array_merge

array_merge関数では、引数に複数の配列を指定します。それにより、第1引数の配列の後ろに、第2引数以降の配列を結合した配列を返します。

また、結合する際に配列のキーが同じ文字列の場合、前のキーの値は上書きされますが、キーが同じインデックス(添字)の場合には上書きされません。

以下、array_merge関数の例となります。

$array1 = array(
	"color" => "red",
    2,
    4
);
$array2 = array(
	"color" => "green",
    "shape" => "trapezoid",
    4
);
$result = array_merge($array1, $array2);

print_r($result);

出力結果

以下が出力結果となり、配列$array1に、配列$array2を結合しています。また、その際にキーが同じ文字列の場合に値を上書きしています。

例では、配列$array1のキー[color]の値が上書きされています。

Array
(
    [color] => green
    [0] => 2
    [1] => 4
    [shape] => trapezoid
    [2] => 4
)

キーが同じ場合に上書き|array_replace

array_replace関数では、引数に複数の配列を指定します。それにより、第1引数の配列の後ろに、第2引数以降の配列を結合した配列を返します。

また、結合する際に配列のキーが同じ場合、前のキーの値は上書きされます。

以下、array_replace関数の例となります。

$array1 = array(
	"color" => "red",
    2,
    4
);
$array2 = array(
	"color" => "green",
    "shape" => "trapezoid",
    4
);
$result = array_replace($array1, $array2);

print_r($result);

出力結果

以下が出力結果となり、配列$array1に、配列$array2を結合しています。また、その際にキーが同じ場合に値を上書きしています。

例では、配列$array1のキー[color]と[0]の値が、それぞれ上書きされています。

Array
(
    [color] => green
    [0] => 4
    [1] => 4
    [shape] => trapezoid
)

キーが同じ場合に上書き・多次元配列も処理|array_replace_recursive

array_replace_recursive関数では、引数に複数の配列を指定します。それにより、第1引数の配列の後ろに、第2引数以降の配列を結合した配列を返します。

また、結合する際に配列のキーが同じ場合、前のキーの値は上書きされます。

上記に加えて、array_replace_recursive関数では、多次元配列の内側の配列にも、再帰的に結合・上書きを行います。

以下、array_replace_recursive関数とarray_replace関数で、2次元配列の結合を比較した例となります。

$array1 = array(
	'fruit1' => array( "orange", "grape", "melon") , 
	'fruit2' => array("blackberry", "raspberry"), 
);
$array2 = array(
	'fruit1' => array('pine', "apple"), 
	'fruit2' => array('strawberry')
);

// array_replace_recursive関数の場合
$result = array_replace_recursive($array1, $array2);
print_r($result);

// array_replace関数の場合
$result = array_replace($array1, $array2);
print_r($result);

array_replace_recursive関数の出力結果

以下がarray_replace_recursive関数の出力結果となり、配列$array1に、配列$array2を結合しています。また、その際にキーが同じ場合に値を上書きしています。

また、array_replace_recursive関数では、それぞれ内側の配列も結合・上書きしています。

Array
(
    [fruit1] => Array
        (
            [0] => pine
            [1] => apple
            [2] => melon
        )

    [fruit2] => Array
        (
            [0] => strawberry
            [1] => raspberry
        )
)

array_replace関数の出力結果

以下がarray_replace関数の出力結果となり、配列$array1に、配列$array2を結合しています。また、その際にキーが同じ場合に値を上書きしています。

array_replace_recursive関数とは異なり、内側の配列は処理しないため、配列$array1と外側のキーが同じ配列$array2がそのまま上書きされ出力しています。

Array
(
    [fruit1] => Array
        (
            [0] => pine
            [1] => apple
        )

    [fruit2] => Array
        (
            [0] => strawberry
        )
)

参考サイトなど

コメント投稿コメント投稿欄を開く

コメントは項目欄(*は必須項目)を入力し、「コメントを送信」ボタンをクリックしてください。 (メールアドレスは公開されることはありません。コメントの公開は承認制となります。)

また、多忙によりコメントには返信できない場合があります。

Twitterで返信する場合はこちらから。