php两个二维数组怎么合并_php二维数组合并array_merge_recursive法【教程】

雪夜
发布: 2025-12-16 09:39:16
原创
488人浏览过
可采用四种方法精确合并二维数组:一、array_merge_recursive递归合并,保留同名键所有值;二、foreach循环追加子数组,保持结构扁平;三、array_replace_recursive递归覆盖,适合配置项更新;四、手动遍历按字段匹配合并,适用于记录式去重补全。

php两个二维数组怎么合并_php二维数组合并array_merge_recursive法【教程】

如果您有两个二维数组,需要将它们合并为一个包含所有元素的新二维数组,但发现直接使用 array_merge 可能导致键名覆盖或结构混乱,则可以采用多种方法实现精确合并。以下是解决此问题的步骤:

一、使用 array_merge_recursive 合并二维数组

array_merge_recursive 函数会递归地合并数组,对相同字符串键名的值进行合并为数组,而非覆盖;对数字键名则追加到结果数组末尾。该方法适用于希望保留同名键下所有值、且不丢失嵌套结构的场景。

1、定义第一个二维数组,例如 $arr1 = [['a' => 1, 'b' => 2], ['c' => 3]];

2、定义第二个二维数组,例如 $arr2 = [['a' => 4, 'd' => 5], ['e' => 6]];

立即学习PHP免费学习笔记(深入)”;

3、调用 $result = array_merge_recursive($arr1, $arr2);

4、检查结果:$result[0]['a'] 将是一个包含 [1, 4] 的数组,$result[1] 包含 ['c' => 3, 'e' => 6] 等元素。

二、使用 foreach 循环逐个追加子数组

该方法通过遍历第二个数组,将其每个子数组使用 array_push 或 [] 追加至第一个数组末尾,确保索引连续、结构扁平、无键名冲突,适用于需保持子数组独立性且不修改原键结构的情形。

1、初始化 $merged = $arr1;

2、使用 foreach ($arr2 as $sub) { $merged[] = $sub; };

3、确认 $merged 是一个由 $arr1 和 $arr2 所有子数组按顺序拼接而成的新二维数组;

4、注意:此方式不会合并同名键,仅做行级拼接,原始子数组内部结构完全保留

晓象AI资讯阅读神器
晓象AI资讯阅读神器

晓象-AI时代的资讯阅读神器

晓象AI资讯阅读神器 72
查看详情 晓象AI资讯阅读神器

三、使用 array_replace_recursive 实现键值覆盖式合并

array_replace_recursive 在遇到相同键名时,以右侧数组的值递归替换左侧数组对应位置的值,适合需按层级覆盖配置项或默认值的二维结构。

1、准备两个结构相似的二维数组,如 $defaults = ['user' => ['name' => '', 'age' => 0]] 和 $data = ['user' => ['name' => 'Alice']];

2、执行 $result = array_replace_recursive($defaults, $data);

3、验证 'user' => ['name' => 'Alice', 'age' => 0] 已生成,其中 name 被替换,age 保留默认值;

4、该方法要求数组具有可对齐的嵌套层级,否则深层键可能被意外覆盖或忽略

四、手动遍历并合并相同键名的子数组

当两个二维数组的子数组具有语义关联(如都含 'id' 键),需按指定字段匹配后合并对应行时,需编写逻辑遍历比对,避免简单堆叠或递归覆盖。

1、创建空结果数组 $merged = [];

2、遍历 $arr1,提取每项的标识键(如 'id')作为临时键存入 $merged;

3、遍历 $arr2,若其 'id' 已存在于 $merged 中,则用 array_merge 合并该子数组,否则追加为新项;

4、此方式可精准控制合并粒度,适用于数据库记录式二维数组的去重与字段补全

以上就是php两个二维数组怎么合并_php二维数组合并array_merge_recursive法【教程】的详细内容,更多请关注php中文网其它相关文章!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号