PHP array_merge() 函数

在 PHP 中,array_merge() 函数用于将两个或多个数组合并成一个数组。它是处理数组操作的常用函数,广泛应用于配置合并、数据整合等场景。以下是对 array_merge() 函数的详细介绍,包括定义、语法、参数、返回值、示例和注意事项,适合初学者快速上手。


1. 定义

  • array_merge():将多个数组合并为一个数组。如果存在相同的键名,后面数组的值会覆盖前面数组的值(对于数字键会追加)。
  • 所属库:PHP 内置函数,无需额外引入。
  • 用途:合并配置数组、整合数据集合、追加数组元素。

2. 语法

array array_merge(array ...$arrays)
  • 参数
    • $arrays:[一个或多个要合并的数组(可变参数,PHP 5.6+ 支持)。
  • 返回值:合并后的新数组。](https://yingjuxia.***/archives/3324)

3. 行为规则

  • 数字键
    • 数字索引的键(0, 1, 2, …)会被重新索引,元素按顺序追加。
  • 字符串键
    • 如果多个数组有相同的字符串键,后面的值会覆盖前面的值。
  • 类型处理
    • 合并后的数组保留原始类型(数字、字符串等)。
  • 空数组
    • 如果传入空数组,返回空数组。
    • 如果只传入一个数组,返回该数组的副本。

4. 基本用法

4.1 合并两个数组(数字键)
$array1 = [1, 2, 3];
$array2 = [4, 5, 6];
$result = array_merge($array1, $array2);
print_r($result);

输出

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
)
  • 说明:数字键被重新索引,元素按顺序追加。
4.2 合并数组(字符串键)
$array1 = ['name' => 'Alice', 'age' => 20];
$array2 = ['age' => 21, 'city' => 'New York'];
$result = array_merge($array1, $array2);
print_r($result);

输出

Array
(
    [name] => Alice
    [age] => 21
    [city] => New York
)
  • 说明age 键在 $array2 中的值(21)覆盖了 $array1 中的值(20)。
4.3 合并多个数组
$array1 = ['a' => 1];
$array2 = ['b' => 2];
$array3 = ['c' => 3];
$result = array_merge($array1, $array2, $array3);
print_r($result);

输出

Array
(
    [a] => 1
    [b] => 2
    [c] => 3
)
4.4 合并空数组
$array1 = [];
$array2 = [1, 2, 3];
$result = array_merge($array1, $array2);
print_r($result);

输出

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)

5. 常见使用场景

  • 合并配置
$defaultConfig = ['theme' => 'light', 'lang' => 'en'];
$userConfig = ['lang' => 'fr', 'font' => 'Arial'];
$config = array_merge($defaultConfig, $userConfig);
print_r($config);

输出

Array
(
    [theme] => light
    [lang] => fr
    [font] => Arial
)
  • 整合数据
$users1 = ['Alice', 'Bob'];
$users2 = ['Charlie'];
$allUsers = array_merge($users1, $users2);
print_r($allUsers);

输出

Array
(
    [0] => Alice
    [1] => Bob
    [2] => Charlie
)
  • 处理动态数组
$arrays = [
    ['name' => 'Alice'],
    ['age' => 20],
    ['city' => 'New York']
];
$result = array_merge(...$arrays); // PHP 7.4+ 展开运算符
print_r($result);

输出

Array
(
    [name] => Alice
    [age] => 20
    [city] => New York
)

6. 注意事项

  • 键名覆盖
    • 字符串键:后数组的值覆盖前数组的同名键。
    • 数字键:重新索引,不会覆盖。
  • 性能
    • array_merge() 适合中小型数组,处理大型数组时可能有性能开销。
    • 比直接使用 + 运算符更可靠(+ 保留第一个数组的键值)。
  • array_merge_recursive() 的区别
    • array_merge():同名字符串键直接覆盖。
    • array_merge_recursive():同名键合并为子数组。
    $array1 = ['key' => 'value1'];
    $array2 = ['key' => 'value2'];
    $result = array_merge_recursive($array1, $array2);
    print_r($result);
    
    输出
    Array
    (
        [key] => Array
            (
                [0] => value1
                [1] => value2
            )
    )
    
  • + 运算符的区别
    • + 保留第一个数组的键值,忽略后续数组的同名键。
    $array1 = ['key' => 'value1'];
    $array2 = ['key' => 'value2'];
    $result = $array1 + $array2;
    print_r($result);
    
    输出
    Array
    (
        [key] => value1
    )
    
  • 空参数
    • 如果不传入数组,PHP 7.4+ 会抛出警告。
    • PHP 8.0+ 要求至少一个数组。

7. 高级示例

7.1 合并嵌套数组
$array1 = ['user' => ['name' => 'Alice', 'age' => 20]];
$array2 = ['user' => ['city' => 'New York']];
$result = array_merge_recursive($array1, $array2);
print_r($result);

输出

Array
(
    [user] => Array
        (
            [name] => Alice
            [age] => 20
            [city] => New York
        )
)
7.2 动态合并多数组
function ***bineArrays(...$arrays) {
    return array_merge(...$arrays);
}

$result = ***bineArrays(
    ['a' => 1],
    ['b' => 2],
    ['a' => 3]
);
print_r($result);

输出

Array
(
    [a] => 3
    [b] => 2
)

8. 总结

  • array_merge():将多个数组合并为一个,字符串键覆盖,数字键追加。
  • 关键点
    • 适合合并配置、整合数据。
    • 字符串键:后值覆盖前值。
    • 数字键:重新索引,顺序追加。
  • 推荐实践
    • 使用 array_merge_recursive() 处理嵌套数组。
    • 避免使用 + 运算符合并数组(行为不一致)。
    • 检查输入数组,防止空参数警告。
  • 适用场景:配置管理、数据整合、动态数组处理。

如果你需要更具体的示例(如处理复杂嵌套数组、结合框架使用)或对其他 PHP 函数的说明,请告诉我!

转载请说明出处内容投诉
CSS教程网 » PHP array_merge() 函数

发表评论

欢迎 访客 发表评论

一个令你着迷的主题!

查看演示 官网购买