array_replace - 配列を置換して合成する
array_replaceは、第1引数の配列と第2引数以降の配列を、合成する関数です。同じキーがある場合、後の配列の要素が、前の配列の要素を置き換えるのが特徴です。
構文
パラメータ
$array1
対象の配列。
$array2
合成する配列。
$...
第3引数、第4引数、と合成する配列を指定できる。
返り値
array
合成してできた配列。
サンプルコード
<?php
$array1 = [
"a" => 1,
"b" => 2,
] ;
$array2 = [
"c" => 3,
"d" => 4,
] ;
$response = array_replace( $array1, $array2 ) ;
デモ
基本は合成
この関数は基本は合成です。例えば、下記の通りです。
<?php
/*** このコードは編集できます。 ***/
$array1 = [
"a" => 1,
"b" => 2,
] ;
$array2 = [
"c" => 3,
"d" => 4,
] ;
$response = array_replace( $array1, $array2 ) ;
var_dump( $response ) ;
同じキーがある場合
特徴は、配列間で同じキーが存在する場合です。array_replaceという名前の通り、同じキーが後の配列にある場合に置換されます。
<?php
/*** このコードは編集できます。 ***/
$array1 = [
"a" => 1,
"b" => 2,
] ;
$array2 = [
"a" => 3, // 置換される
"c" => 4,
] ;
$response = array_replace( $array1, $array2 ) ;
var_dump( $response ) ;
添字キーの場合
もちろん、添字キーでも挙動は同じです。
<?php
/*** このコードは編集できます。 ***/
$array1 = [ "a", "b" ] ;
$array2 = [ "c", "d" ] ;
$response = array_replace( $array1, $array2 ) ;
var_dump( $response ) ;
第一次元だけ
処理が適用されるのは、一次元目だけです。
<?php
/*** このコードは編集できます。 ***/
$array1 = [
"a" => [
"a" => 1,
"c" => 1,
],
] ;
$array2 = [
"a" => [
"a" => 2,
"b" => 2,
],
] ;
$response = array_replace( $array1, $array2 ) ;
var_dump( $response ) ;
array_replace_recursive()なら、同じキーの値を深い階層まで再帰的に比較、処理してくれます。
<?php
/*** このコードは編集できます。 ***/
$array1 = [
"a" => [
"a" => 1,
"c" => 1,
],
] ;
$array2 = [
"a" => [
"a" => 2,
"b" => 2,
],
] ;
$response = array_replace_recursive( $array1, $array2 ) ;
var_dump( $response ) ;
参考
- PHP: array_replace
- PHPの公式リファレンス。
関連記事
- array_walk_recursive
- ユーザー定義の関数を全ての要素に、再帰的に適用する。
- array_replace_recursive
- 配列を再帰的に、置換して合成する。
- array_walk
- ユーザー定義の関数を全ての要素に適用する。