合并2个或多个数组是可以使用下面3个方式:
1. 使用数组运算符 $a + $b ( 具体的应该说成 $a 和 $b 的联合 )
+ 运算符把右边的数组附加到左边的数组后面,但是重复的键值(不区分数值索引和字符串键值)不会被覆盖。
<?php $a = array(1,2,3,'a'=>'apple'); $b = array(1,7,8,9,'a'=>'barana',10); $c = $a + $b; // Union of $a and $b echo "Union of $a and $b: \n"; print_r($c); //output Union of $a and $b: // Array ( [0] => 1 [1] => 2 ['a']=>apple [2] => 3 [3] => 9 [4] => 10 ) ?>
2. 使用 array_merge 合并一个或多个数组
array_merge() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。
<?php
$ar1 = array('a', 'b');
$ar2 = array('c', 'd');
$ar3 = ($ar1 + $ar2);
print_r($ar3);
//Result:
//Array
//(
// [0] => a
// [1] => b
//)
//Where as:
$ar1 = array('a', 'b');
$ar2 = array('c', 'd');
$ar3 = array_merge($ar1, $ar2);
print_r($ar3);
//Result:
//Array
//(
// [0] => a
// [1] => b
// [2] => c
// [3] => d
//)
?>
3. 使用array_merge_recursive 递归地合并一个或多个数组
array_merge_recursive() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
如果输入的数组中有相同的字符串键名,则这些值会被合并到一个数组中去,这将递归下去(如果其中一方为非数组将会转换被成数组类型),因此如果一个值本身是一个数组,本函数将按照相应的条目把它合并为另一个数组。然而,如果数组具有相同的数组键名,后一个值将不会覆盖原来的值,而是附加到后面。
<?php
$ar1 = array("color" => array("favorite" => "red"), 5);
$ar2 = array(10, "color" => array("favorite" => "green", "blue"));
$result = array_merge_recursive($ar1, $ar2);
?>
result:
Array
(
[color] => Array
(
[favorite] => Array
(
[0] => red
[1] => green
)
[0] => blue
)
[0] => 5
[1] => 10
)
<?php
$ar1 = array("color" => "red", 5);
$ar2 = array(10, "color" => array("favorite" => "green", "blue"));
$result = array_merge_recursive($ar1, $ar2);
var_dump($result);
?>
result:
array(3) {
["color"]=>
array(3) {
[0]=>
string(3) "red"
["favorite"]=>
string(5) "green"
[1]=>
string(4) "blue"
}
[0]=>
int(5)
[1]=>
int(10)
}



