PHP合并多数组有五种方式:一、array_merge()重排数字键、保留字符串键;二、+运算符左优先键名合并;三、array_merge_recursive()递归合并同键值;四、foreach手动逐位填充;五、array_replace()同键覆盖。

当需要将多个元素个数不一致的数组进行合并时,PHP 提供了多种处理逻辑,具体行为取决于目标合并方式:是按索引顺序追加、按键名覆盖、横向拼接还是逐位填充。以下是几种常用且互不相同的实现方法:
array_merge() 会将后续数组的值追加到前一个数组末尾,若存在字符串键则保留键名,数字键则被重新索引。适用于忽略原键名、仅需值集合的场景。
1、定义两个元素数量不同的数组,例如 $arr1 = ['a', 'b'] 和 $arr2 = ['x', 'y', 'z', 'w']。
2、调用 $result = array_merge($arr1, $arr2)。
立即学习“PHP免费学习笔记(深入)”;
3、输出 $result 将得到索引从 0 开始连续的新数组:[0=>'a', 1=>'b', 2=>'x', 3=>'y', 4=>'z', 5=>'w']。
+ 运算符执行“左优先”键名合并:左侧数组的键值对保留,右侧数组中与左侧键名重复的部分被忽略,仅新增键名被加入。适用于以第一个数组为模板补充字段的场景。
1、定义 $arr1 = ['name' => 'Alice', 'age' => 25] 和 $arr2 = ['age' => 30, 'city' => 'Beijing']。
2、执行 $result = $arr1 + $arr2。
3、结果中 'age' => 25 来自 $arr1,'city' => 'Beijing' 来自 $arr2,键名不冲突时全部保留。
该函数对相同字符串键的值不覆盖,而是递归地合并为数组。当多个数组在相同键下均有值且类型兼容时,会构建嵌套结构,适合多维配置合并。
1、设定 $arr1 = ['tags' => ['php'], 'status' => 'active'] 和 $arr2 = ['tags' => ['mysql', 'html'], 'level' => 'advanced']。
2、调用 $result = array_merge_recursive($arr1, $arr2)。
3、结果中 'tags' => ['php', 'mysql', 'html'],'status' 与 'level' 并存,无覆盖。
当需按位置对齐合并(如将短数组补空或补默认值后与长数组对齐),需手动遍历最长数组长度,逐一判断各源数组对应位置是否存在元素。
1、获取所有输入数组,计算最大长度:$maxLen = max(array_map('count', [$arr1, $arr2, $arr3]))。
2、初始化空结果数组 $result = []。
3、使用 for ($i = 0; $i
4、最终 $result 是一个长度等于最长源数组、缺失位置已显式填充的扁平数组,确保维度对齐且无键名干扰。
array_replace() 以第一个数组为基准,后续数组中相同键名的值将直接覆盖前者,不重排索引,不递归处理,适用于配置项覆盖场景。
1、声明 $base = ['host' => 'localhost', 'port' => 3306, 'debug' => false] 和 $override = ['port' => 3307, 'debug' => true]。
2、执行 $config = array_replace($base, $override)。
3、结果中 'port' 和 'debug' 均已被 $override 中对应值替换,其余键值保持不变。
以上就是PHP怎么合并元素不等的数组_PHP合并不同元素个数数组的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号