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!