欢迎访问宙启技术站
智能推送

PHP函数array_merge的使用方法详解

发布时间:2023-06-10 20:19:07

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函数会返回一个新的空数组。