在PHP中转换2d数组?

时间:2015-03-30 09:50:49

标签: php arrays sorting

我需要一个可以转换二维数组的函数:

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
        )

)

1 个答案:

答案 0 :(得分:2)

对于一个简单的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);