Transpor uma Array em PHP

Com o PHP 5.6 um novo tipo de função foi criado e facilitou bastante algumas operações. Uma delas é a função variádica (Link) onde você pode usar um operador “…” e adicionar quantos parâmetros quiser em uma função. Por exemplo:

function f($req, $opt = null, ...$params) {
    // $params é uma variável contendo todos os outros argumentos.
    printf('$req: %d; $opt: %d; number of params: %d'."\n",
           $req, $opt, count($params));
}

f(1);
f(1, 2);
f(1, 2, 3);
f(1, 2, 3, 4);
f(1, 2, 3, 4, 5);

Assim, ficou fácil fazer a transposição de uma array:

function transpose($array) {
    return array_map(null, ...$array);
}

Antigamente o código era ligeiramente maior, mas parecia mais um hack do que uma implementação:

function transpose($array) {
    array_unshift($array, null);
    return call_user_func_array('array_map', $array);
}

Espero ter ajudado!