如何按键合并两个PHP数组,将对应键值追加而非覆盖?
用PHP内置函数轻松实现数组合并
嘿,这个需求完全不用嵌套foreach来折腾!用array_map就能一步搞定,而且代码简洁得很。
PHP 7.4+ 版本(推荐)
如果你用的是PHP 7.4及以上,箭头函数让这个写法更清爽:
$finalArray = array_map(fn($itemFromArray, $itemFromArray2) => [$itemFromArray, $itemFromArray2], $array, $array2);
兼容低版本PHP(7.3及以下)
要是你的PHP版本还没到7.4,换成匿名函数就行:
$finalArray = array_map(function($itemFromArray, $itemFromArray2) { return [$itemFromArray, $itemFromArray2]; }, $array, $array2);
为什么这个方法管用?
array_map会同步遍历你传入的两个数组,把每个对应键的子数组拿出来,包装成一个新的数组。因为你的两个输入数组键完全匹配(都是test1和test2),所以最终结果会完美保留原有的键,每个键下面就是你要的两个子数组的集合,和你给出的$finalArray结构完全一致。
验证结果
运行上面的代码后,$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'] ] ];
小提醒
这个方法默认两个数组的键是完全对应的,如果$array2有$array没有的键,这些键会被忽略;如果$array有$array2没有的键,对应位置会出现null。不过根据你的问题描述,应该是两个数组键完全一致的场景,所以完全没问题。
内容的提问来源于stack exchange,提问作者LukeKov
相关产品推荐
相关产品推荐

