2026-02-14 08:23:07
在PHP中,若需根据二维数组的键值下标循环生成新数组(即转置数组,使原数组的行变为列、列变为行),可使用array_map函数结合展开运算符(...)实现。以下是具体方法及示例:
核心思路两种实现方式输出结果一致,转置后的数组结构如下:
array(3) { [0] => array(2) { [0] => string(8) "测试-2票" [1] => string(8) "颜夕-2票" } [1] => array(2) { [0] => string(8) "小白-2票" [1] => string(8) "小黑-2票" } [2] => array(3) { [0] => string(8) "张张-2票" [1] => string(8) "小黄-2票" [2] => string(8) "小绿-2票" }}关键点说明转置逻辑:
原数组的每一行(子数组)成为新数组的每一列。
例如,原数组第1行['测试-2票', '颜夕-2票']变为新数组第1列['测试-2票', '小白-2票', '张张-2票'](若需完整转置,需确保所有子数组长度一致)。
字符串长度差异:
示例中"小绿-2票"与其他元素长度不同(如"小绿-2"可能是笔误),但不影响转置逻辑,输出会保留原始数据。
PHP版本兼容性:
箭头函数(fn)需PHP 7.4+,低版本需使用完整function语法。
若需严格转置(行变列),需确保原数组所有子数组长度相同。例如:
$arr = [ ['测试-2票', '小白-2票', '张张-2票'], ['颜夕-2票', '小黑-2票', '小黄-2票'],];$result = array_map(fn(...$i) => $i, ...$arr);var_dump($result);输出:
array(3) { [0] => array(2) { [0] => string(8) "测试-2票" [1] => string(8) "颜夕-2票" } [1] => array(2) { [0] => string(8) "小白-2票" [1] => string(8) "小黑-2票" } [2] => array(2) { [0] => string(8) "张张-2票" [1] => string(8) "小黄-2票" }}总结