【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
)
)