1UnitedPower: Array "umsortieren"

Beitrag lesen

Meine Herren!

Mathematisch betrachtet möchtest du das Array transponieren. Am besten stellt man sich das vor, indem man das Array einmal um die Diagonale dreht. Wikipedia hat dazu eine schöne Animation.

Wir können das ganz einfach mit array_map erreichen.
Angenommen wir haben die Daten:

$matrix = array(  
    array('a','b','c'),  
    array(1,2,3)  
);

Dann können wir die Transponierte wie folgt berechnen:

$transposed = array_map( null, $matrix[0], $matrix[1] );

Das blöde an dem Code ist, dass wir jede Zeile der Matrix einzeln an die array_map-Funktion übergeben müssen. Das können wir beheben, indem wir die Parameter automatisch aus der Matrix entpacken (etwas Theorie).

Der Code ändert sich dann wie folgt:

$transposed = call_user_func_array('array_map', array_merge(array(null),$matrix) );

Das sieht ziemlich abenteuerlich aus, aber das liegt nur daran, dass wir in PHP (noch) keine schönere Methode haben um Parameter zu entpacken.

Vorstellen muss man sich den Code so:

$transposed = array_map( null, ...$matrix );

Wobei die Punkte hier andeuten sollen, dass die Zeilen aus der Matrix extrahiert werden und als einzelne Parameter an array_map übergeben werden.

--
“All right, then, I'll go to hell.” – Huck Finn