Heim >Backend-Entwicklung >PHP-Problem >So sortieren Sie ein 2D-Array mit PHP
Das Sortieren eines zweidimensionalen Arrays ist eine sehr häufige Aufgabe in PHP. Wenn Sie große Datenmengen verarbeiten, kann das Sortieren eines Arrays die Effizienz Ihres Codes erheblich verbessern. Für ein einzelnes Array können Sie mit Funktionen wie sort() und rsort() in aufsteigender und absteigender Reihenfolge sortieren. Bei zweidimensionalen Arrays ist jedoch mehr Code erforderlich, um die Sortierung zu implementieren. In diesem Artikel wird erläutert, wie Sie mit PHP ein zweidimensionales Array sortieren, einschließlich der Sortierung nach angegebenen Spalten, der Sortierung nach mehreren Spalten und benutzerdefinierter Sortierfunktionen.
1. Nach angegebenen Spalten sortieren
Wir können die in PHP integrierte Funktion usort() verwenden, um eine Sortierung zu erreichen. Die Funktion usort() ähnelt der Funktion sort(), ermöglicht uns jedoch die Verwendung einer benutzerdefinierten Funktion zum Sortieren. Um ein 2D-Array nach einer bestimmten Spalte zu sortieren, müssen wir eine benutzerdefinierte Sortierfunktion schreiben und diese an die Funktion usort() übergeben. Hier ist ein einfaches Beispiel für die Sortierung nach der zweiten Spalte in einem zweidimensionalen Array:
<?php function sortBySecondColumn($a, $b) { return $a[1] - $b[1]; } $people = array( array('Tom', 23), array('Jack', 31), array('Mary', 27), ); usort($people, 'sortBySecondColumn'); print_r($people); ?>
Die Ausgabe lautet:
Array ( [0] => Array ( [0] => Tom [1] => 23 ) [1] => Array ( [0] => Mary [1] => 27 ) [2] => Array ( [0] => Jack [1] => 31 ) )
Unsere benutzerdefinierte Funktion sortBySecondColumn() vergleicht die zweite Spalte der Arrays $a und $b und sortiert sie je nach aufsteigender oder absteigender Reihenfolge. Die Funktion usort() ordnet das Array gemäß unserer benutzerdefinierten Sortierfunktion neu.
2. Mehrspaltige Sortierung
Wenn wir nach mehreren Spalten sortieren müssen, können wir unsere benutzerdefinierte Funktion leicht ändern und weitere Bedingungen für jede Spalte hinzufügen. Um ein Array nach der ersten und zweiten Spalte zu sortieren, verwenden Sie bitte den folgenden Code:
<?php function sortByMultipleColumns($arr, $col1, $col2) { foreach ($arr as $key => $row) { $column1[$key] = $row[$col1]; $column2[$key] = $row[$col2]; } array_multisort($column1, SORT_ASC, $column2, SORT_DESC, $arr); return $arr; } $people = array( array('Tom', 31), array('Tom', 25), array('Mary', 27), array('Mary', 29), ); $people = sortByMultipleColumns($people, 0, 1); print_r($people); ?>
Die Ausgabe lautet:
Array ( [0] => Array ( [0] => Mary [1] => 29 ) [1] => Array ( [0] => Mary [1] => 27 ) [2] => Array ( [0] => Tom [1] => 31 ) [3] => Array ( [0] => Tom [1] => 25 ) )
Im obigen Code haben wir für jede Spalte ein Array hinzugefügt und dann die Funktion array_multisort() zum Sortieren verwendet Die erste Spalte in aufsteigender Reihenfolge und die zweite Spalte in absteigender Reihenfolge. Letztendlich wird das ursprüngliche Array der sortierten Ergebnisse verwendet.
3. Benutzerdefinierte Sortierfunktion
Bei Verwendung einer benutzerdefinierten Sortierfunktion können wir für jedes Element im Array ein Sortierkriterium definieren. Die benutzerdefinierte Funktion sollte einen Wert zurückgeben, der zum Vergleichen anderer Elemente im Array verwendet wird. Dieser Rückgabewert kann positiv, negativ oder Null sein, je nachdem, wie die Elemente verglichen werden. Hier ist ein Beispiel einer einfachen Filterfunktion:
<?php function sortByLength($a, $b) { return strlen($a) - strlen($b); } $cities = array("Berlin", "Athens", "Madrid", "Rome", "Paris"); usort($cities, 'sortByLength'); print_r($cities); ?>
Die Ausgabe lautet:
Array ( [0] => Rome [1] => Paris [2] => Berlin [3] => Athens [4] => Madrid )
Im obigen Beispiel haben wir eine benutzerdefinierte Funktion sortByLength() definiert, die die Länge jedes Array-Elements vergleicht und es nach Sortierung in aufsteigender Reihenfolge sortiert Ordnung und gibt positiv, negativ oder null zurück.
Fazit
In PHP sortieren wir ein zweidimensionales Array mithilfe der Funktion usort(). Um nach einer bestimmten Spalte zu sortieren, müssen wir lediglich eine benutzerdefinierte Sortierfunktion schreiben und diese an die Funktion usort() übergeben. Wir können auch nach mehreren Spalten sortieren, indem wir mehrere Bedingungen hinzufügen. Mit benutzerdefinierten Sortierfunktionen können wir weitere Sortierkriterien im Array definieren. Jeder Programmierer sollte mit diesen Techniken vertraut sein, wenn er zweidimensionale Arrays manipuliert.
Das obige ist der detaillierte Inhalt vonSo sortieren Sie ein 2D-Array mit PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!