PHP中如何将多个单维数组合并为目标多维数组?
如何将多个单维数组合并为指定格式的多维数组?
很简单,这里有几种实用的方法可以实现你要的转换,根据你的实际场景选择就行:
方法1:直接手动构建(最直观)
如果你的数组数量不多,直接把每个单维数组放进一个新数组里就搞定了,PHP 5.4+还支持更简洁的短数组语法:
// 你的原始单维数组 $test1 = array( '0' => 'test1', '1' => 'test2', '2' => 'test3' ); $test2 = array( '0' => 'test21', '1' => 'test22', '2' => 'test23' ); $test3 = array( '0' => 'test31', '1' => 'test32', '2' => 'test33' ); $test4 = array( '0' => 'test41', '1' => 'test42', '2' => 'test43' ); // 构建目标多维数组(长语法) $result_needed = array( $test1, $test2, $test3, $test4 ); // 或者用短数组语法(推荐,更简洁) $result_needed = [ $test1, $test2, $test3, $test4 ];
这样得到的$result_needed就是你要的格式:外层数组的索引0对应$test1,索引1对应$test2,以此类推,每个元素都是原来的单维数组。
方法2:循环批量处理(适合数组数量多的场景)
如果你的数组是按规律命名的(比如test1、test2...testN),用循环可以避免手动逐个添加,效率更高:
$result_needed = []; // 遍历数组编号,这里假设是1到4 for ($i = 1; $i <= 4; $i++) { $varName = 'test' . $i; // 先检查变量是否存在,避免报错 if (isset($$varName)) { $result_needed[] = $$varName; } }
这里用到了变量变量($$varName),它会根据字符串变量的值获取对应的数组变量。
方法3:用compact函数快速合并
如果你能明确说出所有数组的变量名,可以用compact()函数一次性把它们打包,不过默认返回的数组键名是变量名(比如'test1'),如果需要数字索引,用array_values()转换一下:
// 先打包成关联数组 $temp = compact('test1', 'test2', 'test3', 'test4'); // 转换为数字索引的多维数组 $result_needed = array_values($temp);
这样得到的结果和方法1完全一致。
内容的提问来源于stack exchange,提问作者always-a-learner
相关产品推荐
相关产品推荐

