tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 2 Beitrag von Yaslaw
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
240
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Thomasio Thomasio ist offline Mitglied Platin
    Registriert seit
    Aug 2006
    Beiträge
    685
    Ich versuche eine Sortierung zu machen, so wie Windows das schon länger macht, sprich Buchstaben ohne Beachtung von gross/klein und Zahlen nach Wert.

    Beispiel:

    123Test123
    9Test123
    123Test9
    9Test9

    Soll sortiert so aussehen

    9Test9
    9Test123
    123Test9
    123Test123

    Gibt es dafür eine fertige Funktion, oder eine Stück Code dazu?
     

  2. #2
    Avatar von Starfox2007
    Starfox2007 Starfox2007 ist offline Mitglied Silber
    Registriert seit
    Apr 2010
    Beiträge
    87
    Dafür kannst du z.b. sort(); verwenden.

    http://php.net/manual/en/function.sort.php
     

  3. #3
    Avatar von Yaslaw
    Yaslaw Yaslaw ist gerade online n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    array_multisort().

    Zuerst ein Sortierarray erstellen indem du alle Strings mit strtoupper() in in Grossbuchstaben wandelst.
    Dann mit array_multisort() den Sortierarray sortieren und den eigentlichen Stringarray mitsortieren lassen (mehr darüber in der Doku zu array_multisort())

    PHP-Code:
    $strings[] = '123test123';
    $strings[] = '9Test123';
    $strings[] = '123Test9';
    $strings[] = '9test9';

    //Array-Kopy mit Grossbuchstabenwandel
    $sort array_map('strtoupper'$strings);
    //Sortieren nach dem Grussbuchstabenarray, der eigentliche Array wird mitsortiert
    array_multisort($sortSORT_DESC$strings);    
    print_r($strings); 
    Ausgabe:
    Code :
    1
    2
    3
    4
    5
    6
    7
    
    Array
    (
        [0] => 9test9
        [1] => 9Test123
        [2] => 123Test9
        [3] => 123test123
    )

    Nachtrag: @Starfox2007
    rsort() (oder sort() für aufsteigend) führt nicht zum gewünschten Resultat. Gross und Kleinbuchstaben werden unterschiedlich gewertet.
    Code :
    1
    2
    3
    4
    5
    6
    7
    
    Array
    (
        [0] => 9test9
        [1] => 9Test123
        [2] => 123test123
        [3] => 123Test9
    )

    Nachtrag II:
    Man könnte auch mit usort() eine eigene Sortierfunktion schreiben, die zuerst die Werte in Grossbuchstaben wandelt und dann vergleicht. Ich finde die array_multisort() aber eleganter

    Nachtrag III:
    natcasesort() ist auch eine möglichkeit. Wertet aber9Test kleiner als 123Test, da die Zahlen als 9 mit 123 verglichen werden...
    chmee und Thomasio bedanken sich. 
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  4. #4
    Thomasio Thomasio ist offline Mitglied Platin
    Registriert seit
    Aug 2006
    Beiträge
    685
    Vielen Dank, das hilft mir weiter.
     

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 26.01.09, 13:06
  2. Strings sortieren
    Von Thomasio im Forum C/C++
    Antworten: 5
    Letzter Beitrag: 06.12.07, 02:17
  3. Sortieren von Strings
    Von keydo im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 19.11.07, 13:51
  4. Strings in SQL sortieren
    Von nitrane im Forum Relationale Datenbanksysteme
    Antworten: 8
    Letzter Beitrag: 24.06.07, 17:28
  5. Set bestehend aus Strings sortieren
    Von wSam im Forum Java
    Antworten: 3
    Letzter Beitrag: 27.02.07, 19:04