Php 按键合并两个数组并将值从一个数组追加到另一个数组
我有两个数组。每个阵列都有键test1和test2,例如: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" => [
$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);