全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

php中array_merge_recursive合并冲突_php递归合并重复键成数组的处理逻辑

array_merge_recursive会递归合并数组,相同键且值为数组时深入合并,否则将值转为数组保留;示例中键冲突的标量被合并成数组,多层结构递归处理,但无法自定义策略可能导致意外结果。

在PHP中,array_merge_recursive 是一个用于合并多个数组的函数。与普通的 array_merge 不同,当遇到相同键名时,它不会简单地覆盖值,而是尝试将这些值“递归合并”。尤其当相同键对应的值都是数组时,该函数会进一步深入处理,形成多维结构。

相同键但值为非数组时的处理

如果两个数组中有相同的字符串键,且对应值都不是数组,array_merge_recursive 会将这两个值放入一个数组中,保留两者。

例如:
$arr1 = ['key' => 'value1'];
$arr2 = ['key' => 'value2'];
$result = array_merge_recursive($arr1, $arr2);
// 结果:['key' => ['value1', 'value2']]
可以看到,原本的字符串值被合并成了一个包含两个元素的数组。

相同键且值均为数组时的递归合并

当相同键对应的值都是数组,array_merge_recursive 会递归地对这两个数组执行同样的合并逻辑。

示例:
$arr1 = ['users' => ['a' => 1, 'b' => 2]];
$arr2 = ['users' => ['b' => 3, 'c' => 4]];
$result = array_merge_recursive($arr1, $arr2);

// 结果:
[
    'users' => [
        'a' => 1,
        'b' => [2, 3],  // 注意:这里 b 被合并成数组
        'c' => 4
    ]
]
注意关键点:键 b 在两个数组中都存在,且其值是标量(整数),因此被合并为数组 [2, 3]。而 ac 不存在冲突,直接保留。

深层嵌套的递归行为

该函数会持续递归进入多层数组,只要遇到相同键且值都为数组,就继续合并。如果某一层的值不再是数组,则按前述规则转为数组保存。

例如:
$arr1 = ['config' => ['db' => ['host' => 'localhost', 'port' => 3306]]];
$arr2 = ['config' => ['db' => ['port' => 5432, 'name' => 'test']]];

$result = array_merge_recursive($arr1, $arr2);

// 结果:
[
    'config' => [
        'db' => [
            'host' => 'localhost',
            'port' => [3306, 5432],  // 合并为数组
            'name' => 'test'
        ]
    ]
]

注意事项与潜在问题

  • 无法自定义合并策略 —— 所有重复键都会被强制合并为数组,不能选择覆盖或跳过。
  • 可能导致结构意外变化,特别是当你期望某个键始终是字符串或整数时,结果却变成数组。
  • 对于关联数组中的数值键,行为可能不符合预期,建议提前检查数据结构。
  • 不处理对象,仅适用于数组。
基本上就这些。如果你需要更精细的控制(比如只在特定条件下合并),就得自己实现递归合并函数,而不是依赖 array_merge_recursive


# php  # 关联数组  # 字符串  # 递归  # 数据结构  # 对象  # 都是  # 这两个  # 自定义  # 值为  # 多维  # 组中  # 是一个  # 如果你  # 成了 


相关文章: 建站主机服务器选购指南:轻量应用与VPS配置解析  建站之星体验版:智能建站系统+响应式设计,多端适配快速建站  如何快速使用云服务器搭建个人网站?  如何快速搭建个人网站并优化SEO?  h5网站制作工具有哪些,h5页面制作工具有哪些?  免费ppt制作网站,有没有值得推荐的免费PPT网站?  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  行程制作网站有哪些,第三方机票电子行程单怎么开?  Android使用GridView实现日历的简单功能  婚礼视频制作网站,学习*后期制作的网站有哪些?  如何快速建站并高效导出源代码?  高防服务器租用指南:配置选择与快速部署攻略  定制建站流程步骤详解:一站式方案设计与开发指南  如何构建满足综合性能需求的优质建站方案?  网站制作费用多少钱,一个网站的运营,需要哪些费用?  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  简历在线制作网站免费版,如何创建个人简历?  建站之星安装失败:服务器环境不兼容?  如何在自有机房高效搭建专业网站?  如何在IIS中新建站点并配置端口与物理路径?  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  建站之星安装需要哪些步骤及注意事项?  台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  网站图片在线制作软件,怎么在图片上做链接?  MySQL查询结果复制到新表的方法(更新、插入)  如何在Windows虚拟主机上快速搭建网站?  如何选择CMS系统实现快速建站与SEO优化?  专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  建站之星如何一键生成手机站?  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  b2c电商网站制作流程,b2c水平综合的电商平台?  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  长沙企业网站制作哪家好,长沙水业集团官方网站?  如何挑选高效建站主机与优质域名?  家庭服务器如何搭建个人网站?  网站微信制作软件,如何制作微信链接?  太原网站制作公司有哪些,网约车营运证查询官网?  如何解决ASP生成WAP建站中文乱码问题?  建站之星代理如何优化在线客服效率?  教学论文网站制作软件有哪些,写论文用什么软件 ?  Android自定义控件实现温度旋转按钮效果  建站之星24小时客服电话如何获取?  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  如何选择服务器才能高效搭建专属网站?  网站制作价目表怎么做,珍爱网婚介费用多少?  如何高效利用200m空间完成建站?  如何在腾讯云服务器快速搭建个人网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。