PHP数组合并的四种常见方法与区别详解

Chloe
Chloe
发布时间:2026-10-15| 5人浏览过
原创

在PHP日常开发中,合并数组是高频操作。不同的合并方式在处理数字索引和字符串键名时行为截然不同,若选错方法可能导致数据丢失或结构混乱。本文将通过代码实例详解“+”运算符、array_merge()、array_merge_recursive()及 array_combine() 的核心机制与适用场景。

使用“+”运算符进行数组合并

+ 运算符用于将两个数组合并为一个。其核心逻辑是保留左侧(第一个)数组的键值对,如果右侧数组存在相同键名,则会被忽略,不会发生覆盖。

第1步:执行“+”合并操作

当两个数组拥有相同的键名(无论是数字还是字符串)时,左侧数组的值优先级更高。注意,数字索引不会重置,而是按照原有的键名排列。

<?php
$a = [1, 2, 3, 'a' => 'a'];
$b = ['a' => 'aa', 'b' => 'bb', 4, 5, 6, 7, 'c' => 'cc', 8];
$c = $a + $b;
var_dump($c);

完成状态观察:在结果数组中,键名为 'a' 的值仍为 'a'(来自 $a),而非 'aa';数字索引保留了原始顺序特征。

使用 array_merge() 函数

array_merge() 是最常用的合并函数,适合大多数需要将多个数组串联起来的场景。它与 + 运算符最大的不同在于对数字索引的处理和键名冲突的逻辑。

第2步:执行 array_merge 合并

该函数的行为规则如下:

  • 字符串键名:后出现的值会覆盖先出现的值。
  • 数字键名:不会覆盖,而是追加到末尾,且键名会自动重新从0开始连续编号。
<?php
$a = [1, 2, 3, 'a' => 'a'];
$b = ['a' => 'aa', 'b' => 'bb', 4, 5, 6, 7, 'c' => 'cc', 8];
$c = array_merge($a, $b);
var_dump($c);

完成状态观察:结果中 'a' 键对应的值为 'aa'(被覆盖);所有数字元素重新排列为 0 到 N 的连续索引。

使用 array_merge_recursive() 函数

当需要保留所有相同键名的值而不希望丢失数据时,可以使用递归合并函数。它适用于处理配置合并等复杂层级结构。

第3步:执行递归合并

如果遇到相同键名的元素,函数会将它们封装到一个新的数组中,形成多维结构。同时,数字索引依然会重新排序。

<?php
$a = [1, 2, 3, 'a' => 'a'];
$b = ['a' => 'aa', 'b' => 'bb', 4, 5, 6, 7, 'c' => 'cc', 8];
$c = array_merge_recursive($a, $b);
var_dump($c);

完成状态观察:键名 'a' 对应的值变成了包含 'a' 和 'aa' 的数组 ['a', 'aa'],实现了数据的非破坏性合并。

使用 array_combine() 函数

此方法并非传统意义上的“合并”,而是拼接。它将一个数组的值作为新数组的键,另一个数组的值作为新数组的值。使用前需确保两个数组元素个数一致。

第4步:创建关联数组映射

<?php
$keys = ['name', 'age', 'city'];
$values = ['John', 25, 'New York'];
$result = array_combine($keys, $values);
var_dump($result);

风险提示:如果两个输入数组的长度不一致,array_combine 将触发错误。务必在调用前验证 count($arr1) == count($arr2)。

总结

选择合适的数组合并方式至关重要:+ 运算符简单直接,适合只需优先保留某一方数据的场景;array_merge() 适合常规串联并自动整理索引;array_merge_recursive() 用于保留重复键值的复杂合并;而 array_combine() 则是构建键值映射的工具。以上就是PHP中合并数组的常见方法的详细内容,更多关于PHP数组操作优化技巧的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。