Forum
Öffentliche Foren |
FORUM: Spiele & Computer THEMA: Array elegant sortieren | |||||
AUTOR | BEITRAG | ||||
deluxe *acetalisiert*
RANG Master of Clanintern |
#1 - 18.05 17:20 Im moment benutze ich folgende Funktion:
Diese kehrt mir die Funktionalität von strnatcomp um, weil ich per usort DESC sortiern will . Ich frag mich aber ob das nicht eleganter geht weil irgendwie find ich das |
||||
Crush (sexy shoeless god of war)
RANG Deckschrubber |
#2 - 18.05 18:01 Wenn du die Funktionalität umkehren willst, wie wäre es dann mit:return strnatcmp($a, $b) * -1; Wenn der Sortieralgorithmus seine Vergleichsfunktion nur boolean verwendet, dann erreichst du eventuell mit return !strnatcmp($a, $b); dasselbe Ergebnis mit weniger CPU Takten. By the way: Welche Sprache ist das überhaupt? |
||||
horst
RANG Prophet of Clanintern |
#3 - 18.05 18:10 sieht sich nach php aus? |
||||
Crush (sexy shoeless god of war)
RANG Deckschrubber |
#4 - 19.05 00:44 In dem Fall:return strnatcmp($a, $b) * -1; |
||||
deluxe *acetalisiert*
RANG Master of Clanintern |
#5 - 19.05 14:21 öhm ja *hust*... das kehrt mir zumindest strnatcmp eleganter um |
||||
*al!ve* - Vorbereitung aufs Urlaubssemester
RANG Master of Clanintern |
#6 - 19.05 15:30 Und was wenn nicht das willst du, wenn du usort verwenden willst? |
||||
horst
RANG Prophet of Clanintern |
#7 - 20.05 13:44 Noch komplizierter kann man sich nicht ausdrücken ,oder? |
||||
poky *geisteskranke Sensation*
RANG God |
#8 - 20.05 15:39 Goli´s post versteh ich nicht |
||||
*al!ve* - Vorbereitung aufs Urlaubssemester
RANG Master of Clanintern |
#9 - 20.05 19:55 In #1 war sowohl gefordert, dass mittels usort sortiert werden soll, als auch, dass das Kriterium die Umkehrung von strnatcmp ist. Da ist nun mal das von Crash in #4 geschriebene die vermutlich schnellste Lösung. Deshalb ist #5 als Kritik an der Umkehrung von strnatcmp unpassend, weil diese Umkehrung Teil der Anforderung war. |
||||
Crush (sexy shoeless god of war)
RANG Deckschrubber |
#10 - 20.05 21:27 Man könnte natürlich auch das Array normal mit strnatcmp sortieren und dann array_reverse($array) anwenden.Alternativ zu usort mit strnatcmp kann man übrigens auch einfach natsort($array) oder natcasesort($array) (nicht case-sensitive Version) benutzen. |
||||
deluxe *acetalisiert*
RANG Master of Clanintern |
#11 - 21.05 11:57 War nicht als Kritik an der Umkehrung zu verstehn... zugegeben das Wörtchen "zumindest" war nicht ganz passend und auch #1 beschreibt das was ich will vielleicht net optimal....ich bin auch offen für Vorschläge wie man das ingesamt anders machen kann. #1 war mehr ne Beschreibung wie ich das gemacht hab, weniger die Vorraussetzung, dass es so gemacht werden muss.Ich führ das mal kurz weiter aus: Es geht um ein Array das so (nur a bissle größer) aufgebaut is: $a[] = array("a" => 10, b => "a"); $a[] = array("a" => 5, b => "b"); $a[] = array("a" => 6, b => "c"); $a[] = array("a" => 3, b => "d"); $a[] = array("a" => 8, b => "d"); $a soll nu nach "a" absteigend sortiert werden (nat. Sortierung). |
||||
marinE
RANG Deckschrubber |
#12 - 05.06 12:29
oder etwas besser lesbar:
|
||||