插件窝 干货文章 php两个数组合并方法有哪些

php两个数组合并方法有哪些

array 数组 递归 合并 541    来源:    2025-03-18

在PHP中,合并数组有多种方法,具体取决于你想要的结果。以下是几种常见的数组合并方法:

1. 使用 array_merge() 函数

array_merge() 函数用于将一个或多个数组合并为一个数组。它会将数组的值合并,如果有相同的键(字符串键),后面的数组的值会覆盖前面的数组的值。

$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);

输出:

Array
(
    [color] => green
    [0] => 2
    [1] => 4
    [2] => a
    [3] => b
    [shape] => trapezoid
    [4] => 4
)

2. 使用 + 运算符

+ 运算符也可以用于合并数组,但它与 array_merge() 的行为不同。如果两个数组有相同的键(无论是数字键还是字符串键),+ 运算符会保留第一个数组的值,而忽略第二个数组的值。

$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = $array1 + $array2;
print_r($result);

输出:

Array
(
    [color] => red
    [0] => 2
    [1] => 4
    [shape] => trapezoid
)

3. 使用 array_merge_recursive() 函数

array_merge_recursive() 函数与 array_merge() 类似,但它会递归地合并数组。如果两个数组有相同的键(字符串键),它会将这些值合并为一个数组。

$array1 = array("color" => array("favorite" => "red"), 5);
$array2 = array(10, "color" => array("favorite" => "green", "blue"));
$result = array_merge_recursive($array1, $array2);
print_r($result);

输出:

Array
(
    [color] => Array
        (
            [favorite] => Array
                (
                    [0] => red
                    [1] => green
                )

            [0] => blue
        )

    [0] => 5
    [1] => 10
)

4. 使用 array_replace() 函数

array_replace() 函数会用第二个数组的值替换第一个数组的值,如果第二个数组中有相同的键(无论是数字键还是字符串键)。

$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_replace($array1, $array2);
print_r($result);

输出:

Array
(
    [color] => green
    [0] => a
    [1] => b
    [2] => 4
    [shape] => trapezoid
)

5. 使用 array_replace_recursive() 函数

array_replace_recursive() 函数与 array_replace() 类似,但它会递归地替换数组中的值。

$array1 = array("color" => array("favorite" => "red"), 5);
$array2 = array(10, "color" => array("favorite" => "green", "blue"));
$result = array_replace_recursive($array1, $array2);
print_r($result);

输出:

Array
(
    [color] => Array
        (
            [favorite] => green
            [0] => blue
        )

    [0] => 10
)

总结

  • array_merge(): 合并数组,后面的数组会覆盖前面的数组的相同键(字符串键)。
  • + 运算符: 合并数组,前面的数组会覆盖后面的数组的相同键(无论是数字键还是字符串键)。
  • array_merge_recursive(): 递归合并数组,相同键的值会合并为一个数组。
  • array_replace(): 替换数组,后面的数组会替换前面的数组的相同键(无论是数字键还是字符串键)。
  • array_replace_recursive(): 递归替换数组,相同键的值会递归替换。

根据你的需求选择合适的合并方法。