Assoziative Array-Sortierung nach numerischem Wert und Schlüssel
Dieses Programmierproblem betrifft ein assoziatives Array mit numerischen Werten, das speziell auf die Erstellung einer Liste abzielt Dabei werden Tags zunächst nach absteigender Häufigkeit und anschließend alphabetisch aufsteigend sortiert Reihenfolge.
Problemdefinition
Betrachten Sie ein beispielhaftes Array:
$arrTags = [ 'mango' => 2, 'orange' => 4, 'apple' => 2, 'banana' => 3 ];
Die gewünschte Ausgabe für dieses Array ist eine sortierte Liste:
orange (4) banana (3) apple (2) mango (2)
Die native PHP-Funktion arsort() greift zu kurz, da sie aufgrund ihrer alphabetischen Reihenfolge Mango vor Apfel priorisiert Dominanz.
Lösung
Durch den Einsatz der Funktionen array_keys() und array_values() kann dieses Problem effizienter angegangen werden. Der folgende Code veranschaulicht die Lösung:
array_multisort(array_values($arrTags), SORT_DESC, array_keys($arrTags), SORT_ASC, $arrTags);
Diese einzelne Zeile macht eine Schleife überflüssig und führt die erforderliche Sortierung durch, indem zunächst die Werte mit array_values() aus dem Array in ein sortierbares Array extrahiert werden. Anschließend werden die Werte mit SORT_DESC absteigend sortiert. Gleichzeitig werden die entsprechenden Schlüssel mit array_keys() extrahiert und mit SORT_ASC aufsteigend sortiert. Die Ergebnisse werden dann unter Verwendung des bereitgestellten $arrTags-Parameters wieder im ursprünglichen Array kombiniert.
Das obige ist der detaillierte Inhalt vonWie sortiere ich ein assoziatives Array nach numerischem Wert und Schlüssel in absteigender bzw. aufsteigender Reihenfolge?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!