如何用PHP快速实现二维数组的行列转置?
PHP 二维数组转置的高效简便实现
直接用内置函数实现转置
PHP 提供了更简洁的方式实现二维数组转置,无需手动编写两层foreach循环——使用array_map()函数并传入null作为回调参数即可完成。
基础示例
原数组:
$array = array( array(1, 2), array(3, 4), array(5, 6) );
转置代码(PHP 5.6+ 支持展开运算符):
$transposed = array_map(null, ...$array);
如果你的PHP版本低于5.6,可改用call_user_func_array兼容:
$transposed = call_user_func_array('array_map', array_merge([null], $array));
转置后的结果:
array( array(1, 3, 5), array(2, 4, 6) );
非对称数组的处理
如果原数组是非对称二维数组(子数组长度不一致),array_map()会自动用null填充缺失的元素。例如:
原数组:
$array = array( array(1, 2, 3), array(4, 5), array(6) );
转置后得到:
array( array(1, 4, 6), array(2, 5, null), array(3, null, null) );
若需要过滤掉转置结果中的null值,可以自定义回调实现:
$transposed = array_map(function(...$items) { return array_filter($items, fn($item) => $item !== null); }, ...$array);
性能优势
array_map()是PHP底层实现的函数,相比手动编写两层foreach循环,在性能上更有优势,同时代码更简洁易读。
内容的提问来源于stack exchange,提问作者Kostas
相关产品推荐
相关产品推荐

