返回官网

php 合并数组 array_merge,array_merge_recursive,array_values

狒狒 2025-6-26 技术札记 34 次

在PHP中,合并数组有多种方法。根据你的需求,你可以选择最适合你的方法来合并数组。以下是一些常见的方法:

1. 使用+运算符
+运算符可以用来合并两个数组。如果两个数组有相同的字符串键名,则后面的数组的元素将覆盖前面的数组的元素。对于数字键名,则不会进行覆盖,而是保留后面的数组中的元素。

$array1 = array("a" => "apple", "b" => "banana");
$array2 = array("a" => "apricot", "c" => "cherry");
$result = $array1 + $array2;
print_r($result);
输出:

Array
(
    [a] => apricot
    [b] => banana
    [c] => cherry
)
2. 使用array_merge()函数
array_merge()函数用于合并一个或多个数组。它会将一个或多个数组的元素合并后组成一个新的数组。如果输入的数组中有相同的字符串键名,则后面的数组的元素将覆盖前面的数组的元素。对于数字键名,则会重新索引,后面的数组的元素排在前面数组的元素之后。

$array1 = array("a" => "apple", "b" => "banana");
$array2 = array("a" => "apricot", "c" => "cherry");
$result = array_merge($array1, $array2);
print_r($result);
输出:

Array
(
    [a] => apple
    [b] => banana
    [c] => cherry
)
3. 使用array_merge_recursive()函数
array_merge_recursive()函数与array_merge()类似,但它处理数组的方式不同。如果两个或更多数组中的元素有相同的字符串键名,则该键名所对应的值会组成一个数组,而不是简单地覆盖。这对于合并多维数组特别有用。

$array1 = array("a" => array("apple"), "b" => "banana");
$array2 = array("a" => array("apricot"), "c" => "cherry");
$result = array_merge_recursive($array1, $array2);
print_r($result);
输出:

Array
(
    [a] => Array
        (
            [0] => apple
            [1] => apricot
        )
    [b] => banana
    [c] => cherry
)
4. 使用+运算符与array_values()结合(仅适用于数字键名)
如果你想要合并两个数组并且保留所有的数字键名,你可以先用+运算符合并数组,然后用array_values()函数重新索引数字键名。

$array1 = array("apple", "banana");
$array2 = array("apricot", "cherry");
$result = array_values($array1 + $array2); // 或者使用 $result = array_values(array_merge($array1, $array2)); 也可以达到同样的效果。
print_r($result);
输出:

Array
(
    [0] => apple
    [1] => banana
    [2] => apricot // 注意这里是从0开始重新索引的,所以是2而不是3。如果使用array_merge则会得到3。
    [3] => cherry // 同上,这里是3而不是4。使用array_merge会是4。
)
根据你的具体需求选择合适的方法。例如,如果你需要保留原始的数字索引并且不希望覆盖任何元素,使用+运算符后跟array_values()可能是一个好选择。如果你需要合并多维数组并且保留所有的值,使用array_merge_recursive()会更合适。对于大多数其他情况,array_merge()通常是一个好的通用选择。

发表评论

Copyright © 2016 DEWEBSTUDIO