PHP函数array_merge的使用方法详解
array_merge是PHP中一个非常常见的函数,它可以用来合并两个或多个数组的元素,返回合并后的数组。它的使用方法多种多样,本文将详细介绍array_merge函数的使用方法。
基本用法
array_merge函数的基本用法非常简单,只需要将要合并的数组作为参数传递给它,就可以把这些数组合并成一个数组:
$array1 = array('a', 'b', 'c');
$array2 = array('d', 'e', 'f');
$array3 = array_merge($array1, $array2);
print_r($array3);
上面的代码可以得到以下输出:
Array
(
[0] => a
[1] => b
[2] => c
[3] => d
[4] => e
[5] => f
)
注意,array_merge函数会将所有的参数看作一个数组,所以不管是两个还是多个数组,都可以一次性合并。
键名冲突
如果多个数组中有相同的键名,就会产生冲突。这时,array_merge函数会保留最后一个出现的键名所对应的值。例如:
$array1 = array('a' => 1, 'b' => 2, 'c' => 3);
$array2 = array('a' => 4, 'e' => 5, 'f' => 6);
$array3 = array_merge($array1, $array2);
print_r($array3);
输出结果如下:
Array
(
[a] => 4
[b] => 2
[c] => 3
[e] => 5
[f] => 6
)
可以看到,键名为'a'的元素的值被覆盖了。
键名保留
如果想保留原来的键名,可以使用“+”运算符来实现:
$array1 = array('a' => 1, 'b' => 2, 'c' => 3);
$array2 = array('a' => 4, 'e' => 5, 'f' => 6);
$array3 = $array1 + $array2;
print_r($array3);
输出结果如下:
Array
(
[a] => 1
[b] => 2
[c] => 3
[e] => 5
[f] => 6
)
可以看到,键名为'a'的元素的值没有被覆盖,而是保留了原来的值。
数组递归合并
如果合并的数组中包含子数组,可以使用array_merge_recursive函数来递归合并:
$array1 = array('a' => array('b', 'c'), 'd', 'e');
$array2 = array('a' => array('d', 'e'), 'f', 'g');
$array3 = array_merge_recursive($array1, $array2);
print_r($array3);
输出结果如下:
Array
(
[a] => Array
(
[0] => b
[1] => c
[2] => d
[3] => e
)
[0] => d
[1] => e
[2] => f
[3] => g
)
可以看到,子数组被递归合并了起来。
注意,array_merge_recursive函数在合并子数组时,不会覆盖键名相同的元素,而是把它们合并成一个数组。
空数组
如果合并的数组中有一个或多个空数组,那么array_merge函数就会返回一个新的空数组。例如:
$array1 = array('a', 'b', 'c');
$array2 = array();
$array3 = array_merge($array1, $array2);
print_r($array3);
输出结果如下:
Array
(
[0] => a
[1] => b
[2] => c
)
可以看到,数组$array2没有任何元素,但是合并后的数组并没有包含任何空元素。
总结
array_merge函数是PHP中非常常用的函数之一,能够快速、简单地合并数组。如果多个数组中有相同的键名,可以使用“+”运算符来保留原来的键名。如果数组中包含子数组,可以使用array_merge_recursive函数来递归合并。最后,如果合并的数组中有一个或多个空数组,array_merge函数会返回一个新的空数组。
