2010-08-23 92 views
2

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

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

是否与array_merge相似?

我知道下面是什么,但有一个阵列工作时,我不明白它做什么:

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

回答

3

+运营商在PHP当应用到阵列确实阵列的工作UNION

$arr += array $arr1; 

有效发现的$arr$arr1工会和结果$arr分配。

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; 

索引没有改变。

2

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