Transponieren mehrdimensionaler Arrays in PHP: Spiegeln und Verallgemeinern
Das Transponieren eines mehrdimensionalen Arrays ist eine Operation, die Zeilen und Spalten umdreht und so das Array effektiv dreht 90 Grad. Um diese häufige Programmieraufgabe zu lösen, untersuchen wir eine PHP-Funktion, die dies sowohl für zweidimensionale als auch für höherdimensionale Arrays bewerkstelligt.
Zweidimensionale Arrays transponieren
Für B. ein zweidimensionales Array wie das in der Frage bereitgestellte Beispiel, ist das Transponieren ein unkomplizierter Vorgang. Die folgende Funktion mit dem Namen transpose erreicht dies:
function transpose($array) { array_unshift($array, null); return call_user_func_array('array_map', $array); }
Diese Funktion fügt ein Nullelement als ersten Index des Arrays hinzu und verwendet dann array_map, um über jede Zeile zu iterieren und ein neues Array davon zu erstellen entsprechenden Spalten.
Zum Beispiel, um das in der Frage angegebene $foo-Array zu transponieren:
$bar = transpose($foo); var_dump($bar[2]);
Dies wird das gewünschte ausgeben Ergebnis:
array(3) { ["a"]=> string(2) "a2" ["b"]=> string(2) "b2" ["c"]=> string(2) "c2" }
Verallgemeinerung auf höherdimensionale Arrays
Die Transpositionsfunktion kann verallgemeinert werden, um Arrays jeder Dimension mithilfe von Rekursion zu verarbeiten. So geht's:
function multi_transpose($array) { if (!is_array($array)) { return array($array); } $transposed = array(); foreach ($array as $key => $value) { $transposed[] = multi_transpose($value); } return call_user_func_array('array_map', $transposed); }
Diese Funktion nimmt ein Array als Eingabe und ruft sich rekursiv anhand der Werte des Arrays auf. Der Basisfall liegt vor, wenn der Wert kein Array mehr ist. In diesem Fall wird ein Array mit einem Element zurückgegeben, das den Wert enthält. Bei Arrays wird jeder Wert rekursiv transponiert und mithilfe von array_map zum endgültigen transponierten Array kombiniert.
Die Verwendung der multi_transpose-Funktion ähnelt der zweidimensionalen Transpose-Funktion:
$multi_dimensional_array = ...; $transposed = multi_transpose($multi_dimensional_array);
Dies Die Funktion kann beliebig verschachtelte Arrays verarbeiten und transponiert sie, indem sie ihre Abmessungen um 90 Grad dreht.
Das obige ist der detaillierte Inhalt vonWie kann ich mehrdimensionale Arrays in PHP effizient transponieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!