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

时间:2010-08-23 03:25:19

标签: php array-merge

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

 $arr1 = array('key' => 'value1');
 $arr2 = array('key' => 'value2');
 $arr1 += $arr2;

它与array_merge类似吗?

我知道以下内容,但我不明白使用数组时它的作用:

 $var1 = 1;
 $var2 = 2;
 $var1 += $var2;
 echo $var1; // 3

4 个答案:

答案 0 :(得分:8)

$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);

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

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"
}

答案 1 :(得分:3)

应用于数组时,PHP中的+运算符可以完成数组 UNION 的工作。

$arr += array $arr1;

有效地找到$arr$arr1的联合,并将结果分配给$arr

答案 2 :(得分:2)

两个数组之间的 + 操作就像一个UNION。

答案 3 :(得分:1)

array_merge()与两个数组的总和之间的差异在以下示例中很明显:

$array1 = array();
$array2 = array(1 => "data");
$result = array_merge($array1, $array2);

$result将包含索引为0的数组。

$array1 = array();
$array2 = array(1 => "data");
$result = $array1 + $array2;

索引未更改。