数组合并

array_merge()

$a1=array("red","green");
$a2=array("blue","yellow");
print_r(array_merge($a1,$a2));

Array ( [0] => red [1] => green [2] => blue [3] => yellow ) 

如果两个或更多个数组元素有相同的键名,则最后的元素会覆盖其他元素。
输入多个数组键名是整数,则该函数将返回带有整数键名的新数组,其键名以 0 开始进行重新索引。
array_merge()与 array_merge_recursive() 函数之间的不同是在处理两个或更多个数组元素有相同的键名的情况。

array_merge_recursive()

(1)array_merge_recursive() 不会进行键名覆盖,而是将多个相同键名的值递归组成一个数组。

$a1=array("a"=>"red","b"=>"green");
$a2=array("c"=>"blue","b"=>"yellow");
print_r(array_merge_recursive($a1,$a2));

Array ( [a] => red [b] => Array ( [0] => green [1] => yellow ) [c] => blue ) 

(2)输入多个数组键名是整数,则该函数将返回带有整数键名的新数组,其键名以 0 开始进行重新索引。

$a1=array("2"=>"red","9"=>"green");
$a2=array("99"=>"blue","111"=>"yellow");
print_r(array_merge_recursive($a1,$a2));

Array
(
    [0] => red
    [1] => green
    [2] => blue
    [3] => yellow
)

array_combine()

通过合并两个数组来创建一个新数组,其中的一个数组元素为键名,另一个数组元素为键值:

$fname=array("Bill","Steve","Mark");
$age=array("60","56","31");

$c=array_combine($fname,$age);
print_r($c);

Array ( [Bill] => 60 [Steve] => 56 [Mark] => 31 ) 

合并数组并保留键值的方法

$form_data1 = array(11=>'A',12=>'B',13=>'C',14=>'D');
$form_data2 = array(25=>'B',26=>'A',27=>'D',28=>'C');

$result = $form_data1 + $form_data2;
print_r($result);

Array
(
    [11] => A
    [12] => B
    [13] => C
    [14] => D
    [25] => B
    [26] => A
    [27] => D
    [28] => C
)

使用 “+” 运算符合并数组,可以保留数组的键值,如果合并的数组中含有相同的键值,前面的键值对覆盖后面的键值对。
这里和array_merge()相反。