如何将两个同键PHP数组合并为指定结构的单个数组?
PHP 合并同键嵌套数组解决方案
先看你给出的原始数组:
$arr1 = Array ( [2] => Array ( [0] => 41000 [1] => 31079 ) [3] => Array ( [0] => 42963 [1] => 41189 ) ); $arr2 = Array ( [2] => Array ( [0] => 40213 [1] => 42054 ) [3] => Array ( [0] => 42998 [1] => 34567 ) );
要实现将相同父键下的子数组合并($arr2子数组元素在前,$arr1在后,且子数组重新索引),可以用以下两种方法:
方法一:循环遍历合并
$arr3 = []; // 遍历$arr2的键,确保优先保留$arr2的元素顺序 foreach ($arr2 as $key => $subArr) { // 合并$arr2的子数组与$arr1中同键的子数组,无对应键则仅保留$arr2的内容 $arr3[$key] = array_merge($subArr, $arr1[$key] ?? []); } // 输出结果 print_r($arr3);
方法二:array_map批量处理
如果两个数组的父键完全一致,可简化为:
$arr3 = array_map(function($sub2, $sub1) { return array_merge($sub2, $sub1); }, $arr2, $arr1); // 输出结果 print_r($arr3);
关键说明
- 直接用
array_merge合并父数组会因键名重复导致覆盖,必须针对每个子数组单独合并; array_merge会自动重新索引数字键,正好匹配你需要的连续索引格式;- 方法一中的
?? []是为了避免$arr1无对应键时抛出错误,确保代码健壮性。
内容的提问来源于stack exchange,提问作者Noer Herinnanda Putra
相关产品推荐
相关产品推荐

