PHP 7.4 中合并索引数组应优先用展开运算符(...)配合 array_merge() 处理动态数量数组,如 array_merge(...$arrays);固定两三个数组则直接 array_merge($a, $b, $c) 更直观;切勿误用 + 运算符,因其不支持追加语义。

PHP 7.4 中合并**索引数组**(即纯数字键、顺序递增的数组),优先用 展开运算符(...),前提是已知待合并的数组是变量形式且数量动态;若只是固定两三个数组,array_merge() 更直观稳妥。
展开运算符适合动态合并多个索引数组
PHP 5.6+ 支持展开运算符,7.4 完全兼容。它能将数组“解包”为参数列表,天然适配 array_merge() 的签名:
-
$result = array_merge(...$arrays);——$arrays是一个包含若干索引数组的数组,例如[ [1,2], [3,4], [5] ] - 不会报错、不需循环拼接、不依赖
eval,安全高效 - 结果自动重索引,保持典型索引数组结构:
[1,2,3,4,5]
array_merge 直接调用更适合静态场景
当合并数量固定(如两个或三个已命名数组),直接写 array_merge($a, $b, $c) 更清晰:
- 语义明确,无需额外封装变量
- 对索引数组行为一致:数字键总是被重新编号,从
0开始连续排列 - 比
+运算符更可靠——+在索引数组中会保留左侧键名,导致跳号(如[0=>'x'] + [0=>'y', 1=>'z']得到[0=>'x', 1=>'z']),不适合“追加”语义
别误用 + 运算符处理索引数组
+ 是数组联合,不是合并:
- 它按键名逐个取左值,右值同键被丢弃,不实现“追加”效果
- 数字键冲突时,右侧元素大概率丢失,结果不可预测
- 仅推荐用于关联数组的“默认值填充”(如
$config + $defaults),不适用于索引数组拼接
性能与可读性小提醒
两者底层都需遍历和内存分配,性能差异可忽略。选择依据主要是代码意图:
- 写
array_merge($a, $b):我明确要合这两个 - 写
array_merge(...$list):我有一堆数组,数量不定,统一处理 - 避免
array_merge($a, [$x, $y])这类临时包装——不如直接展开或用array_push追加单个元素
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











