
在 PHP 中,array_merge() 会重置数字键并覆盖重复字符串键,若需合并两个关联数组并完整保留原始键名(如 '533532'、'533179'),应使用数组联合操作符 +,而非 array_merge()。
在 php 中,`array_merge()` 会重置数字键并覆盖重复字符串键,若需合并两个关联数组并完整保留原始键名(如 `'533532'`、`'533179'`),应使用数组联合操作符 `+`,而非 `array_merge()`。
当处理具有语义化字符串键(例如 ID、标识符)的嵌套关联数组时,保持键名完整性至关重要。默认的 array_merge() 函数会对键进行“重新索引”:对于字符串键,后一个数组的同名键会覆盖前一个;而对于本例中完全不重复的键('533532' 和 '533179'),它却意外地将结果转为数字索引([0], [1]),这是因为 array_merge() 在内部将输入视为“索引数组”处理——只要数组没有连续的数字键,其行为就可能违背预期。
正确做法是使用数组联合操作符 +:
$a1 = ['533532' => ['token' => 'token', 'tripboardrefid' => 'tripboardrefid']]; $a2 = ['533179' => ['token' => 'token', 'tripboardrefid' => 'tripboardrefid']]; $result = $a1 + $a2; print_r($result);
输出结果符合预期:
1.修正BUG站用资源问题,优化程序2.增加关键词搜索3.修改报价4.修正BUG 水印问题5.修改上传方式6.彻底整合论坛,实现一站通7.彻底解决群发垃圾信息问题。注册会员等发垃圾邮件7.彻底解决数据库安全9.修改交易方式.增加网站担保,和直接交易两中10.全站可选生成html.和单独新闻生成html(需要装组建)11. 网站有10中颜色选择适合不同的行业不同的颜色12.修改竞价格排名方式13.修
Array
(
[533532] => Array
(
[token] => token
[tripboardrefid] => tripboardrefid
)
[533179] => Array
(
[token] => token
[tripboardrefid] => tripboardrefid
)
)⚠️ 关键注意事项:
立即学习“PHP免费学习笔记(深入)”;
- + 是左优先联合:若 $a1 和 $a2 存在相同字符串键(如都含 '533532'),$a1 中的值将被保留,$a2 的对应值被忽略;
- 若需“右侧优先”或深度合并(如嵌套数组内键也需合并),应改用 array_replace_recursive() 或自定义递归函数;
- + 不修改原数组,返回新数组,符合函数式编程习惯;
- 对空数组安全:$arr + [] 或 [] + $arr 均返回 $arr 原样。
总结:对键名敏感的关联数组合并,请始终优先考虑 + 操作符;仅在需要重索引、类型转换(如强制转为数字键)或需 array_merge() 特有行为(如处理 null 合并)时,才选用 array_merge()。










