数组$ arr + = array $ arr1做什么?

Dar*_*ein 4 php array-merge

我最近经常看到以下内容,我想知道它的作用是什么?我似乎无法在PHP手册中找到它.

 $arr1 = array('key' => 'value1');
 $arr2 = array('key' => 'value2');
 $arr1 += $arr2;
Run Code Online (Sandbox Code Playgroud)

它与array_merge类似吗?

我知道以下是什么,但我不明白它在使用数组时的作用:

 $var1 = 1;
 $var2 = 2;
 $var1 += $var2;
 echo $var1; // 3
Run Code Online (Sandbox Code Playgroud)

Art*_*cto 9

$arr1 += $arr2是的缩写$arr1 = $arr1 + $arr2.

所述+阵列操作者执行以下操作:

  • 创建一个包含所有元素的数组$arr1$arr2,除了一个条件.
  • 如果两个操作数都具有相同的元素,则只存在元素$arr1.
  • $arr2将在那之后的元素$arr1.

这不同于array_merge:

  • 创建包含的所有元素的数组$arr1$arr2,除了下一个条件.
  • 如果两个操作数都具有相同字符串键的元素,则只存在元素$arr2.
  • 数字键的元素将从0开始重新编号,从元素开始$arr1,然后移动到元素$arr2.
  • 的元件$arr2将是后的那些$arr1,除了字符串元素,这将是在它们出现的第一阵列的位置.

例:

<?php
$arr1 = array(1 => 'value1.1', 10 => 'value1.2', 's' => 'value1.s');
$arr2 = array(1 => 'value2', 2=> 'value2.2', 's' => 'value2.s');
var_dump(array_merge($arr1,$arr2));
$arr1 += $arr2;
var_dump($arr1);
Run Code Online (Sandbox Code Playgroud)

结果(为清晰起见编辑):

array(5) {
  [0]   => string(8) "value1.1"
  [1]   => string(8) "value1.2"
  ["s"] => string(8) "value2.s"
  [2]   => string(6) "value2"
  [3]   => string(8) "value2.2"
}
array(4) {
  [1]   => string(8) "value1.1"
  [10]  => string(8) "value1.2"
  ["s"] => string(8) "value1.s"
  [2]   => string(8) "value2.2"
}


Cᴏʀ*_*ᴏʀʏ 2

两个数组之间的+运算的作用类似于 UNION。