関数の概要
PHPの array_replace 関数は、1つ目の配列の要素を、引数で渡したそれ以降の配列の同じキーの要素で置き換えるために使います。同じキーが存在する場合にのみ値が上書きされ、存在しないキーは追加されるわけではありません。配列の内容を部分的に簡単に更新したい時に便利な関数です。
パラメータの説明
array $array:置き換え対象となる元の配列。array ...$replacements:元配列の値を置き換えるための、1つ以上の配列。以降の配列で同じキーが見つかると上書きされる。
戻り値
元の配列のコピーに対して、指定した配列の値を置き換えた新しい配列を返します。元の配列は変更されません。
使用例
基本的な使い方
<?php
$base = ['a' => 1, 'b' => 2, 'c' => 3];
$replace = ['b' => 20, 'c' => 30];
$result = array_replace($base, $replace);
print_r($result);
?>
この例では、$base配列のキー’b’と’c’の値が$replace配列の値で置き換えられ、出力は ['a' => 1, 'b' => 20, 'c' => 30] となります。
複数の置き換え配列を使う
<?php
$base = ['x' => 10, 'y' => 20];
$replace1 = ['y' => 200];
$replace2 = ['x' => 100];
$result = array_replace($base, $replace1, $replace2);
print_r($result);
?>
複数の置き換え配列は順に処理されるため、$baseの’y’は200に置き換えられ、さらに’x’は100に置き換えられます。結果は ['x' => 100, 'y' => 200] となります。
キーが無い場合は変更されない
<?php
$base = ['key1' => 'apple', 'key2' => 'banana'];
$replace = ['key3' => 'cherry'];
$result = array_replace($base, $replace);
print_r($result);
?>
置き換え配列に元の配列に存在しないキーが含まれていても、元の配列はそのキーで追加されることはなく、そのまま保持されます。結果は ['key1' => 'apple', 'key2' => 'banana'] のままです。
関連する関数
- array_merge – 複数の配列を結合し、新しい配列を作成する
- array_replace_recursive – 配列のネスト部分も再帰的に置き換える
- array_diff_assoc – キーと値のペアに基づいて配列の差分を取得する
まとめ
array_replace は、配列の特定のキーの値だけを別の配列で上書きしたい場合に非常に便利な関数です。元配列を変更せずに新しい配列を作成でき、複数の置き換え配列も指定できるので柔軟に利用できます。配列の部分更新をシンプルに実装したい初心者から実務者までおすすめの関数です。
