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

PHP中如何将一个数组合并到另一个数组的子层级?

实现预期的PHP数组合并效果

我懂你的需求啦——你想要把array2里的number和company直接合并到array1的第一个子数组中,让它们成为该子数组的同级键值对,而不是变成外层数组的独立元素,也不是把array2作为一个整体嵌套进去。

先说说你之前尝试的方法为什么不符合预期:

  • array_merge_recursive($array1, $array2)是在外层数组层面合并,所以array2的键会直接成为外层数组的新元素,这就是为什么结果里[0]、number、company是同级的原因。
  • array_push($array1[0], $array2)是把整个array2作为一个单独元素塞进array1[0]里,所以你会看到子数组里多了一个索引为2的元素,里面包含number和company,而不是这两个键直接展开。

正确的实现方法

方法1:直接修改原array1

只需要把array1[0]和array2用array_merge合并后,重新赋值给array1[0]即可:

// 执行合并操作
$array1[0] = array_merge($array1[0], $array2);

// 输出结果(符合你的预期)
print_r($array1);

执行后得到的结果就是你想要的:

array(1) { [0]=> array(4) { ["1234"]=> array(1) { ["fileName"]=> string(10) "monkey.jpg" } ["3456"]=> array(1) { ["fileName"]=> string(9) "horse.jpg" } ["number"]=> string(2) "62" ["company"]=> string(7) "animals" } } 

方法2:创建新数组不修改原数组

如果你不想改动原数组,想要生成一个新的$result数组,可以这样写:

$result = [
    array_merge($array1[0], $array2)
];

print_r($result);

这个写法会直接生成你预期的结构,完全保留原数组的内容。

补充说明

如果array2里的键和array1[0]里的键有重复,array_merge会用array2的值覆盖array1[0]的对应值。如果需要保留重复键的所有值,可以改用array_merge_recursive来合并子数组,不过在你的场景里没有重复键,所以array_merge完全够用啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:23:53