In base allo PHP Manual, chiamare array_map
con un callback NULL
provoca l'esecuzione di una funzione "zip", creando una matrice di array di elementi paralleli dagli array dati.C'è un modo migliore per trasporre un array 2D PHP?
Ad esempio:
array_map(NULL,array(1,2,3),array('a','b','c'));
cede
array(array(1,'a'),array(2,'b'),array(3,'c'))
Questo è anche equivalente a recepire la matrice
array(array(1,2,3),array('a','b','c'))
Al momento, sembra questo è il modo più vicino (utilizzando built -in funzioni) è possibile trasporre una matrice, ad eccezione del fatto che array_map
prende una lista di arr ays, non una serie di array.
In un certo codice sto lavorando, ho bisogno di trasporre un array di array, non un elenco di array, così ho fatto questo work-around:
call_user_func_array('array_map',array_merge(array(NULL),$array_of_arrays))
Tuttavia, questo si sente molto sporco e maldestro .
E così mi chiedo:
Esiste un modo migliore per trasporre una matrice 2D con PHP, oltre a un'implementazione personalizzata?
E altera '$ array_of_arrays' se vorrei utilizzare in un secondo momento, quindi avrei dovuto' array_shift ($ array_of_arrays) 'dopo ... –
@ Austin Hyde: vero. puoi semplicemente fare una copia dell'array: '$ array_of_arrays = $ my_arrays_of_arrays' before – user102008
Funziona solo se le matrici sono classificate> 1 – gurghet