在php中转换2d数组


Transform 2d array in php?

我需要一个从转换2d数组的函数

1 4
2 5
3 6

1 2
3 4
5 6

我的第一个方法是用变换矩阵

array_unshift($data, null);
call_user_func_array('array_map', $data);

但现在我得到了:

1 5
2 6
3
4

有人能帮忙吗?

编辑:好的,让我更清楚地说,我有这些类别,我需要以这种方式重新排序

Array
(
    [0] => Array
        (
            [0] => Das ist los
            [1] => Land & Leute
            [2] => Wirtschaft & Politik
            [3] => Leben
            [4] => Kultur
        )
    [1] => Array
        (
            [0] => Chronik
            [1] => Motor
            [2] => Sport
            [3] => Blaulicht
            [4] => Schauplatz
        )
)

我需要:

Array
(
    [0] => Array
        (
            [0] => Das ist los
            [1] => Wirtschaft & Politik
            [2] => Kultur
            [3] => Motor
            [4] => Blaulicht
        )
    [1] => Array
        (
            [0] => Land & Leute
            [1] => Leben
            [2] => Chronik
            [3] => Sport
            [4] => Schauplatz
        )
)

对于一个简单的2列数组:

$myArray = [
    [1,4],
    [2,5],
    [3,6],
];
$myNewArray = array_chunk(
    array_merge(
        array_column($myArray, 0), 
        array_column($myArray, 1)
    ), 
    2
);
var_dump($myNewArray);

编辑

对于更通用的解决方案:

$myArray = [
    [1,6,11],
    [2,7,12],
    [3,8,13],
    [4,9,14],
    [5,10,15],
];
$columns = count($myArray[0]);
$tmpArray = [];
for($i = 0; $i < $columns; ++$i) {
    $tmpArray = array_merge(
        $tmpArray,
        array_column($myArray, $i)
    );
}
$myNewArray = array_chunk(
    $tmpArray, 
    $columns
);
var_dump($myNewArray);