Heim  >  Artikel  >  Backend-Entwicklung  >  Wie sortiere ich ein assoziatives Array nach numerischen Werten und Schlüsseln in absteigender Reihenfolge?

Wie sortiere ich ein assoziatives Array nach numerischen Werten und Schlüsseln in absteigender Reihenfolge?

Barbara Streisand
Barbara StreisandOriginal
2024-11-12 06:22:01718Durchsuche

How to Sort an Associative Array by Numeric Values and Keys in Descending Order?

Assoziative Arrays nach numerischen Werten und Schlüsseln sortieren

Gegeben ein assoziatives Array mit Zeichenfolgenschlüsseln und numerischen Werten, möchten Sie das Array nach sortieren absteigende numerische Werte und dann alphabetisch nach Tag-Namen. Beispielsweise sollte das Eingabearray:

$arrTags = [
    'mango' => 2, 
    'orange' => 4, 
    'apple' => 2,
    'banana' => 3
];

sollte ausgegeben werden als:

orange (4)  
banana (3) 
apple (2) 
mango (2)

Lösung:

Ein möglicher Ansatz ist die Verwendung usort(). Sie benötigen jedoch eine benutzerdefinierte Vergleichsfunktion, die zuerst nach numerischen Werten und dann nach Schlüsseln sortiert. Dies kann durch Sortieren in zwei Schritten erfolgen: Sortieren Sie zuerst nach absteigenden numerischen Werten und dann nach aufsteigenden Schlüsselwerten.

Um den Code zu vereinfachen, können Sie die Funktionen array_values() und array_keys() verwenden Extrahieren Sie die Werte und Schlüssel in separate Arrays. Verwenden Sie dann array_multisort(), um mehrere Sortierungen für mehrere Arrays durchzuführen. Der folgende Code erzeugt die gewünschte Ausgabe:

array_multisort(array_values($arrTags), SORT_DESC, array_keys($arrTags), SORT_ASC, $arrTags);

Das obige ist der detaillierte Inhalt vonWie sortiere ich ein assoziatives Array nach numerischen Werten und Schlüsseln in absteigender Reihenfolge?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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