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

PHP实现按索引合并两个嵌套数组为指定格式的问题

解决PHP嵌套数组合并问题

问题描述

现有两个结构对应的嵌套数组:

$array1 = 
[
  0 =>
    [
      'data1' => 'value1'
    ],
  1 =>
    [
      'data1' => 'value2'
    ]
];

$array2 = 
[
  0 =>
    [
      'data2' => 'value1'
    ],
  1 =>
    [
      'data2' => 'value2'
    ]
];   

需要将同索引的子数组合并,生成如下结果:

$arrayFinish = 
[
  0 =>
    [
      'data1' => 'value1',
      'data2' => 'value1'
    ],
  1 =>
    [
      'data1' => 'value2',
      'data2' => 'value2'
    ]
];    

原代码错误分析

你之前的代码错误在于将每个子数组作为独立元素存入新数组,而非合并键值对:

foreach ($data1 as $key=>$val)
{
    $arrayFinish[] =
        [
            $val,
        ];

    foreach ($data2[$key] as $key2=>$val2)
    {
       array_push($arrayFinish[$key],['data2'=>$val2]);
    }
}

这段代码会让$arrayFinish的每个索引下包含两个独立子数组,而非合并后的单个数组。

正确解决方案

方法1:循环合并子数组

通过遍历索引,直接合并对应位置的两个子数组:

$arrayFinish = [];
foreach ($array1 as $key => $subArray) {
    // 合并同索引的两个子数组
    $arrayFinish[$key] = array_merge($subArray, $array2[$key]);
}

array_merge()会将两个数组的键值对合并,由于两个子数组的键(data1、data2)不重复,正好得到预期的结构。

方法2:使用array_map简化代码

利用array_map自动遍历两个数组的对应元素,无需手动循环:

$arrayFinish = array_map(function($a, $b) {
    return array_merge($a, $b);
}, $array1, $array2);

该方法会将$array1和$array2的同索引元素传入回调函数,合并后返回组成新数组。

两种方法最终都会生成你需要的目标数组结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 17:40:23