You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP如何合并二维数组且同键名保留最后出现的对应值?

问题解答

现有写法能否实现需求?

不能,存在以下问题:

  • 自定义函数myfunction内部的$x属于未定义变量,运行时会抛出Notice级报错,该变量没有实际作用
  • array_map的作用是遍历数组每个元素执行回调,执行后返回的依然是二维数组,无法实现合并为一维数组的效果
  • 逻辑本身没有处理「同键名保留最后出现的值」的规则,完全不符合需求

更合适的实现方案

PHP原生就提供了非常简便的实现方式,不需要自定义复杂逻辑:

方案1(PHP 5.6+ 推荐)

利用参数展开运算符...配合array_merge,一行代码即可实现:

$result = array_merge(...$a);

原理:array_merge接收多个数组作为参数,遇到相同的字符串键时,后面传入的数组的值会覆盖前面的值,正好符合你要求的「同键名保留最后出现的值」的规则,...$a会直接把二维数组拆成多个单元素数组传入array_merge。

方案2(兼容低版本PHP)

如果使用的PHP版本低于5.6,不支持参数展开运算符,可以用array_reduce实现:

$result = array_reduce($a, function($carry, $item) {
    return array_merge($carry, $item);
}, []);

两种方案执行后得到的$result就是你需要的一维数组结构。

内容的提问来源于stack exchange,提问作者kiabws

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 05:15:03