PHP如何将多个数组合并为带指定键名的多维数组
实现方案
你之前使用array_map(null, $arr_a, $arr_b)的写法会将多个数组同索引位置的值打包,相当于做了二维数组的矩阵转置,生成的结构维度和需求不符。要给子数组绑定指定键名,直接用array_combine做键值映射即可,写法简洁且支持任意多的待合并源数组。
通用可扩展代码
把所有待处理的同结构源数组统一放到集合中,后续新增数组只需要往集合里追加,不需要修改核心处理逻辑:
// 待合并的源数组集合 $sourceList = [$arr_a, $arr_b]; $keys = ['key1', 'key2', 'key3']; // PHP 7.4+ 支持箭头函数的写法 $output = array_map(fn($item) => array_combine($keys, $item), $sourceList); // 低版本PHP兼容写法 $output = array_map(function($item) use ($keys) { return array_combine($keys, $item); }, $sourceList);
如果是固定两个源数组的场景,也可以直接写死映射,逻辑更直观:
$output = [ array_combine($keys, $arr_a), array_combine($keys, $arr_b) ];
运行结果
上述代码执行后生成的结构和预期完全一致:
Array ( [0] => Array ( [key1] => a1 [key2] => a2 [key3] => a3 ) [1] => Array ( [key1] => b1 [key2] => b2 [key3] => b3 ) )
注意:使用时请保证每个源数组的元素长度和
$keys的元素长度完全一致,否则array_combine会抛出运行时警告。
内容的提问来源于stack exchange,提问作者Md Jahid Khan Limon
相关产品推荐
相关产品推荐

