SYNCERのロゴ
アイキャッチ画像

array_replace - 配列を置換して合成する

array_replaceは、第1引数の配列と第2引数以降の配列を、合成する関数です。同じキーがある場合、後の配列の要素が、前の配列の要素を置き換えるのが特徴です。

構文

array array_replace ( array $array1 , array $array2 [, array $... ] )

パラメータ

$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(4) {
  ["a"]=>
  int(1)
  ["b"]=>
  int(2)
  ["c"]=>
  int(3)
  ["d"]=>
  int(4)
}

同じキーがある場合

特徴は、配列間で同じキーが存在する場合です。array_replaceという名前の通り、同じキーが後の配列にある場合に置換されます。

<?php
/*** このコードは編集できます。 ***/

	$array1 = [
		"a" => 1,
		"b" => 2,
	] ;

	$array2 = [
		"a" => 3,	// 置換される
		"c" => 4,
	] ;

	$response = array_replace( $array1, $array2 ) ;

	var_dump( $response ) ;
array(3) {
  ["a"]=>
  int(3)
  ["b"]=>
  int(2)
  ["c"]=>
  int(4)
}

添字キーの場合

もちろん、添字キーでも挙動は同じです。

<?php
/*** このコードは編集できます。 ***/

	$array1 = [ "a", "b" ] ;
	$array2 = [ "c", "d" ] ;

	$response = array_replace( $array1, $array2 ) ;

	var_dump( $response ) ;
array(2) {
  [0]=>
  string(1) "c"
  [1]=>
  string(1) "d"
}

第一次元だけ

処理が適用されるのは、一次元目だけです。

<?php
/*** このコードは編集できます。 ***/

	$array1 = [
		"a" => [
			"a" => 1,
			"c" => 1,
		],
	] ;

	$array2 = [
		"a" => [
			"a" => 2,
			"b" => 2,
		],
	] ;

	$response = array_replace( $array1, $array2 ) ;

	var_dump( $response ) ;
array(1) {
  ["a"]=>
  array(2) {
    ["a"]=>
    int(2)
    ["b"]=>
    int(2)
  }
}

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 ) ;
array(1) {
  ["a"]=>
  array(3) {
    ["a"]=>
    int(2)
    ["c"]=>
    int(1)
    ["b"]=>
    int(2)
  }
}
  • Twitterでシェア
  • Facebookでシェア
  • Google+でシェア
  • はてなブックマークでシェア
  • pocketに保存
  • LINEでシェア
更新履歴
2017年6月26日 (月)
コンテンツを公開しました。