PHP如何按索引合并两个同键数组?
合并两个索引对应数组为子数组的解决方案
array_merge和array_merge_recursive对数字索引数组的处理逻辑是重新索引并追加元素,而非按索引配对组合。要实现将两个数组同索引元素组成子数组的需求,最简洁的方式是使用array_map函数:
代码实现
// 定义原数组 $arr1 = [ 4064628, 4064953, 4064922, 4064870, 4064789, 4064631, 4065044, 4064942, 4064938, 4064936 ]; $arr2 = [ 165020, 165026, 165025, 165023, 165024, 165021, 165027, 165043, 165042, 165045 ]; // 按索引配对组合成子数组 $merged = array_map(function($val1, $val2) { return [$val1, $val2]; }, $arr1, $arr2); // 输出结果 print_r($merged);
输出结果
Array ( [0] => Array ( [0] => 4064628 [1] => 165020 ) [1] => Array ( [0] => 4064953 [1] => 165026 ) [2] => Array ( [0] => 4064922 [1] => 165025 ) [3] => Array ( [0] => 4064870 [1] => 165023 ) [4] => Array ( [0] => 4064789 [1] => 165024 ) [5] => Array ( [0] => 4064631 [1] => 165021 ) [6] => Array ( [0] => 4065044 [1] => 165027 ) [7] => Array ( [0] => 4064942 [1] => 165043 ) [8] => Array ( [0] => 4064938 [1] => 165042 ) [9] => Array ( [0] => 4064936 [1] => 165045 ) )
补充说明
如果两个数组长度不一致,array_map会以较长数组的长度为准,缺失的对应元素会被填充为null。若需要自定义缺失值的处理逻辑,可以修改回调函数:
$merged = array_map(function($val1, $val2) { return [$val1 ?? 0, $val2 ?? 0]; // 用0替代null }, $arr1, $arr2);
内容的提问来源于stack exchange,提问作者Andrei Manta
相关产品推荐
相关产品推荐

