ホームページ >php教程 >php手册 >PHP 配列のマージ: ['+' 演算子]、[array_merge]、[array_merge_recursive] の違い

PHP 配列のマージ: ['+' 演算子]、[array_merge]、[array_merge_recursive] の違い

WBOY
WBOYオリジナル
2016-06-14 00:02:371615ブラウズ

1. "+" 演算子
規則:
2 つの配列のキー名が数値キー名または文字列の場合 Key name
$c = $a + $b
$a の後に追加 ($b は $a に存在しないキー名) キー名と値
注:
1. 上書きはせず、存在しないキー名と対応する値を追加するだけです
2. キー名のインデックスは再作成されません
3. すべての数値キー名であっても、混合であっても、キー名と値のみが追加されます。キー名が同じ場合、追加は行われません。つまり、最初に出現した値が追加されます。最終結果として返される
例 1: 数値キー名

$a = array(
    'a',
);
$b = array(
    'u',
);
$c = $a + $b;
var_dump($c);

output:
array(1) {
  [0]=>
  string(1) "a"
}

例 2: 数値キー名

$a = array(
    66=>'a',
);
$b = array(
    60=>'u',
    66=>'c'
);
$c = $a + $b;
var_dump($c);

output:
array(2) {
  [66]=>
  string(1) "a"
  [60]=>
  string(1) "u"
}

例 3: 文字キー名

<?php  
$a = array(
    1=>'a',
    2=>'b',
    'c'=>'c',
    'd'=>'d',
);
$b = array(
    1=>'u',
    3=>'v',
    'c'=>'w',
    'd'=>'x',
    'y'=>'y',
    60=>'z',
);
$c = $a + $b;
var_dump($c);
?>

output:
array(7) {
  [1]=>
  string(1) "a"
  [2]=>
  string(1) "b"
  ["c"]=>
  string(1) "c"
  ["d"]=>
  string(1) "d"
  [3]=>
  string(1) "v"
  ["y"]=>
  string(1) "y"
  [60]=>
  string(1) "z"
}


2. array array_merge ( array array1 [, array array2 [, array ...]] )
ルール:
Array_merge() 1 つ以上の配列のセルを結合し、1 つの配列の値が前の配列に追加されます。結果の配列を返します。
入力配列に同じ文字列キー名がある場合、キー名の後の値で前の値が上書きされます。
ただし、配列に数値キー名が含まれている場合、後続の値は元の値を上書きせず、追加されます。
配列のみが指定され、その配列が数値的にインデックス付けされている場合、キーは連続的に再インデックス付けされます。
注:
1. 値がマージされた後、キー名のインデックスは継続的に再作成されます
2、文字列キー名、キー名の後の値は前の値を上書きします
例 1: 数値キー名

$a = array(
    'a',
);
$b = array(
    'u',
);
$c = array_merge($a, $b);
var_dump($c);

output:
array(2) {
  [0]=>
  string(1) "a"
  [1]=>
  string(1) "u"
}

例 2: 数値キー名

$a = array(
    66=>'a',
);
$b = array(
    60=>'u',
    66=>'c'
);
$c = array_merge($a, $b);
var_dump($c);

output:
array(3) {
  [0]=>
  string(1) "a"
  [1]=>
  string(1) "u"
  [2]=>
  string(1) "c"
}

例 3: 文字キー名

$a = array(
    1=>'a',
    2=>'b',
    'c'=>'c',
    'd'=>'d',
);
$b = array(
    1=>'u',
    3=>'v',
    'c'=>'w',
    'd'=>'x',
    'y'=>'y',
    60=>'z',
);
$c = array_merge($a, $b);
var_dump($c);

output:
array(8) {
  [0]=>
  string(1) "a"
  [1]=>
  string(1) "b"
  ["c"]=>
  string(1) "w"
  ["d"]=>
  string(1) "x"
  [2]=>
  string(1) "u"
  [3]=>
  string(1) "v"
  ["y"]=>
  string(1) "y"
  [4]=>
  string(1) "z"
}

3. array array_merge_recursive ( array array1 [, array ...] )
array_merge_recursive() 1 つ以上の配列のセルを結合します。結合すると、1 つの配列内の値が前の配列に追加されます。結果の配列を返します。
入力配列に同じ文字列キー名がある場合、値は配列にマージされ、それが再帰的に行われるため、値自体が配列の場合、この関数はそれを次のように配置します。対応するエントリは別の配列にマージされます。
ただし、配列の配列キー名が同じ場合、後の値は元の値を上書きせず、追加されます。
注:
1. ルールは基本的に array_merge と同じですが、同じ文字キー名を処理する場合に再帰的追加が使用される点が異なります
例 1 :テンキー名

$a = array(
    'a',
);
$b = array(
    'u',
);
$c = array_merge_recursive($a, $b);
var_dump($c);

output:
array(2) {
  [0]=>
  string(1) "a"
  [1]=>
  string(1) "u"
}

例 2: 数値キー名

$a = array(
    'a',
);
$b = array(
    'u',
);
$c = array_merge_recursive($a, $b);
var_dump($c);

output:
array(2) {
  [0]=>
  string(1) "a"
  [1]=>
  string(1) "u"
}

例 3: 文字キー名

$a = array(
    1=>'a',
    2=>'b',
    'c'=>'c',
    'd'=>'d',
);
$b = array(
    1=>'u',
    3=>'v',
    'c'=>'w',
    'd'=>'x',
    'y'=>'y',
    60=>'z',
);
$c = array_merge_recursive($a, $b);
var_dump($c);

output:
array(8) {
  [0]=>
  string(1) "a"
  [1]=>
  string(1) "b"
  ["c"]=>
  array(2) {
    [0]=>
    string(1) "c"
    [1]=>
    string(1) "w"
  }
  ["d"]=>
  array(2) {
    [0]=>
    string(1) "d"
    [1]=>
    string(1) "x"
  }
  [2]=>
  string(1) "u"
  [3]=>
  string(1) "v"
  ["y"]=>
  string(1) "y"
  [4]=>
  string(1) "z"
}
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。