Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann ich mehrdimensionale Arrays in PHP effizient transponieren?

Wie kann ich mehrdimensionale Arrays in PHP effizient transponieren?

Barbara Streisand
Freigeben: 2024-12-26 12:05:14
Original
572 Leute haben es durchsucht

How Can I Efficiently Transpose Multidimensional Arrays in PHP?

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);
}
Nach dem Login kopieren

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]);
Nach dem Login kopieren

Dies wird das gewünschte ausgeben Ergebnis:

array(3) {
  ["a"]=>
  string(2) "a2"
  ["b"]=>
  string(2) "b2"
  ["c"]=>
  string(2) "c2"
}
Nach dem Login kopieren

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);
}
Nach dem Login kopieren

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);
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage