Según la PHP Manual, llamando array_map
con una devolución de llamada NULL
hace que se realice una función de "zip", la creación de una matriz de matrices de elementos paralelos de las matrices dadas.¿Hay una mejor manera de transponer una matriz PHP 2D?
Por ejemplo:
array_map(NULL,array(1,2,3),array('a','b','c'));
produce
array(array(1,'a'),array(2,'b'),array(3,'c'))
Esto también es equivalente a la transposición de la matriz
array(array(1,2,3),array('a','b','c'))
En este momento, parece que este es el camino más cercano (utilizando una función -in funciones) puede transponer una matriz, excepto que array_map
toma una lista de arr ays, no una matriz de matrices.
En algún código que estoy trabajando, tengo que transponer una matriz de matrices, no una lista de matrices, así que hice esta solución alternativa:
call_user_func_array('array_map',array_merge(array(NULL),$array_of_arrays))
Sin embargo, esto se siente muy sucia y torpe .
Y entonces pregunto:
¿Hay una mejor manera de transponer una matriz 2D con PHP, además de una implementación personalizada?
y altera '$ array_of_arrays' si me gustaría usarlo más tarde, por lo que tendría que' array_shift ($ array_of_arrays) 'después ... –
@ Austin Hyde: cierto. simplemente puede hacer una copia de la matriz: '$ array_of_arrays = $ my_arrays_of_arrays' de antemano – user102008
Esto funciona solo si las matrices son de rango> 1 – gurghet