Wie sortiere ich ein assoziatives Array nach numerischem Wert und Schlüssel in absteigender bzw. aufsteigender Reihenfolge?

Susan Sarandon
Freigeben: 2024-11-11 10:01:03
Original
242 Leute haben es durchsucht

How to Sort an Associative Array by Numeric Value and Key in Descending and Ascending Order Respectively?

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

Die gewünschte Ausgabe für dieses Array ist eine sortierte Liste:

orange (4)  
banana (3) 
apple (2) 
mango (2)
Nach dem Login kopieren

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

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!

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