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

PHP中如何合并两个数组?合并失败求解决方案

PHP数组合并问题解决方案

嘿,我来帮你搞定这个数组合并的难题!你说用array_push没成功,大概率是用错了它的用法——array_push本质是往数组末尾加单个/多个元素,不是专门用来合并两个数组的,直接塞整个数组进去的话,会把第二个数组当成一个元素嵌套进去,肯定不是你想要的结果。

下面分几种常见场景给你讲正确的合并方法:

1. 合并普通索引数组(保留所有元素,包括重复项)

比如你有两个普通的索引数组:

$arr1 = [1, 2, 3];
$arr2 = [4, 5, 6];

最推荐的方法:用array_merge()

这是PHP专门用来合并数组的函数,直接把两个数组拼起来:

$mergedArr = array_merge($arr1, $arr2);
// 输出结果:[1, 2, 3, 4, 5, 6]

非要用array_push的话?

得用**展开运算符...**把第二个数组拆成单个元素再推进去(PHP 5.6及以上版本支持):

array_push($arr1, ...$arr2);
// 现在$arr1就变成了合并后的数组:[1, 2, 3, 4, 5, 6]

要是不用展开运算符,直接写array_push($arr1, $arr2),结果会是[1,2,3, [4,5,6]]——这就是你之前失败的原因!

2. 合并关联数组(键名重复时覆盖)

如果是带键名的关联数组,比如:

$userInfo1 = ['name' => 'Alice', 'age' => 25];
$userInfo2 = ['age' => 26, 'city' => 'New York'];

用array_merge()的话,重复的键名(比如age)会被后面数组的值覆盖:

$mergedUser = array_merge($userInfo1, $userInfo2);
// 输出结果:['name' => 'Alice', 'age' => 26, 'city' => 'New York']

3. 合并关联数组(保留所有键值,不覆盖重复键)

关联数组的键是唯一的,没法直接保留重复键名。如果想把所有值都合并成索引数组,可以先把两个数组转成纯值数组再合并:

$arr1 = ['a' => 1, 'b' => 2];
$arr2 = ['b' => 3, 'c' => 4];
$mergedArr = array_merge(array_values($arr1), array_values($arr2));
// 输出结果:[1, 2, 3, 4]

要是想保留原键名但又不覆盖,只能手动循环把第二个数组的元素以新的方式插入(比如给键加后缀),不过这种场景比较少见。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:39:21