Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按键合并两个数组并将值从一个数组追加到另一个数组_Php_Arrays_Merge - Fatal编程技术网

Php 按键合并两个数组并将值从一个数组追加到另一个数组

Php 按键合并两个数组并将值从一个数组追加到另一个数组,php,arrays,merge,Php,Arrays,Merge,我有两个数组。每个阵列都有键test1和test2,例如: $array = [ "test1" => [ 'value' => 1, "date"=> '2019-01-01' ], "test2" => [ 'value' => 2, "date"=> '2019-01-01' ] ]; $array2 = [ "test1" => [

我有两个数组。每个阵列都有键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并检查键的情况下执行此操作吗?可能有一种方法可以做到这一点吗?

您可以使用array\u map:

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

NULL可以作为一个值传递给callback,以便在多个数组上执行zip操作

活生生的例子

请注意,这将删除原始关键点。您可以通过array\u combine和array\u键返回它们,如下所示:


为什么人们如此反对使用foreach?实际上很好。谢谢:但是如果一个数组的元素比另一个数组多呢?然后我有一个错误:array_combine:两个参数的元素数应该相等,如果是这种情况,您应该像上面的评论中所说的那样对每个参数进行简单的处理。这种方法是为了加快特定案例的速度
$res = array_map(null, $array1, $array2);
$res = array_map(null, $array1, $array2);
$res = array_combine(array_keys($array1), $res);