Bei der PHP-Entwicklung ist die Sortierung für mehrdimensionale Arrays eine häufigste Anforderung. Das Beherrschen von angemessenen Sortiermethoden kann die Datenverarbeitungseffizienz und die Lesbarkeit der Code effektiv verbessern.
Angenommen, es gibt ein Array, das die Namen und Noten des Schülers enthält. Wir wollen sie zuerst in aufsteigender Reihenfolge nach Namen sortieren und dann in absteigender Reihenfolge nach Klassen.
$students = [
['name' => 'Alice', 'score' => 90],
['name' => 'Bob', 'score' => 85],
['name' => 'Charlie', 'score' => 95],
['name' => 'Dave', 'score' => 80],
];
Durch die Definition einer Vergleichsfunktion können die Sortierregeln genau kontrolliert werden. Die folgenden Funktionen vergleichen zunächst Namen, und der gleiche Name wird die Ergebnisse vergleichen:
function compare_students($a, $b) {
if ($a['name'] == $b['name']) {
return $b['score'] <=> $a['score']; // Verringerte Ergebnisse
}
return strcmp($a['name'], $b['name']); // Aufsteigerer Name
}
Rufen Sie die Funktion usort () an, um die Sortierung zu vervollständigen:
usort($students, 'compare_students');
PHP 7.4 führt das vereinfachte Schreiben anonymer Funktionen ein, um den Code präzise zu gestalten:
uasort($students, function($a, $b) {
if ($a['name'] == $b['name']) {
return $b['score'] <=> $a['score'];
}
return strcmp($a['name'], $b['name']);
});
Die Vergleichsfunktion nimmt zwei Array -Elemente als Parameter vor und gibt eine Ganzzahl zurück, um ihre Auftragsbeziehung darzustellen. Verwenden Sie hier zunächst Strcmp (), um in aufsteigender Reihenfolge der Namen zu sortieren. Wenn die Namen gleich sind, verwenden Sie den Vergleichsoperator <=>, um in absteigender Reihenfolge der Klassen zu sortieren.
Nach Abschluss der Sortierung lautet das Ausgabeergebnis wie folgt:
print_r($students);
Das Array ist alphabetisch im Namen angeordnet, und die Punktzahlen sind von hoch nach niedrig angeordnet, wenn der gleiche Name verwendet wird.
Das Beherrschen der Kernideen und Methoden der multidimensionalen Array-Sortierung von PHP kann Entwicklern helfen, flexibel mit komplexen Datensortierproblemen umzugehen. Kombinieren Sie benutzerdefinierte Vergleichsfunktionen und PHP-integrierte Sortierfunktionen und ist sowohl präzise als auch effizient.