0

我有两个数组。每个数组都有键“test1”和“test2”,例如:

$array = [
   "test1" => [
        'value' => 1, 
        "date"=> '2019-01-01'
    ], 
    "test2" => [
        'value' => 2, 
        "date"=> '2019-01-01'
    ]
];
$array2 = [
    "test1" => [
        'value' => 3, 
        "date"=> '2018-01-01'
    ], 
    "test2" => [
        'value' => 4, 
        "date"=> '2018-01-01'
    ]
];

我需要的只是合并这些数组,让我输出如下:

$finalArray = [
    "test1" => [
        [
            'value' => 1, 
            "date"=> '2019-01-01'
        ], 
        [
            'value' => 3, 
            "date"=> '2018-01-01'
        ]
    ],
    "test2" => [
        [
            'value' => 2, 
            "date"=> '2019-01-01'
        ],
        [
            'value' => 4, 
            "date"=> '2018-01-01'
        ]
    ]
];

它从第一个数组中找到键,并从同一键上的其他数组中添加到该键值。

数组合并对我不起作用,因为它会覆盖我的键。我可以在没有 foreach 和检查键的情况下做到这一点吗?也许是一种可以做到这一点的方法?

4

1 回答 1

1

您可以使用array_map文档)做到这一点:

$res = array_map(null, $array1, $array2);

null作为回调传递的注意事项:

NULL 可以作为值传递给回调以对多个数组执行 zip 操作

现场示例3v4l

请注意,这将删除原始密钥。array_combine您可以通过以下方式退回它们array_keys

$res = array_map(null, $array1, $array2);
$res = array_combine(array_keys($array1), $res);
于 2019-12-30T11:22:56.800 回答