Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] sort() sortiert nicht so wie gewünscht

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] sort() sortiert nicht so wie gewünscht

    hallo,

    ich habe folgendes problem: ich verwende sort() in einem bildviewer file, es soll mir da bilddateinamen sortieren. bis jetzt hat es immer super funktioniert, seit der umstellung von php 4.x auf 5.x sortiert er falsch. hier die dateinamen in der reihenfolge wie ich es gerne hätte:

    d1_1.jpg
    d1_2.jpg
    d1_4a.jpg
    d1_10.jpg

    es kommt leider immer 10 vor 2, ich bekomme das nicht weg. habe auch schon die ganzen zusätze wie SORT_STRING/NUMERIC etc. probiert, entweder bleibt alles beim alten oder es kommt zu einer komplett falschen reihenfolge.

    aktuell sieht es so aus bei mir: sort($pics,SORT_STRING);

    danke für die hilfe!


  • #2
    PHP: natsort - Manual

    [edit] Ups, ist Schwachsinn, ich sollte genauer lesen!

    [edit2] Hmm, vielleicht doch kein Schwachsinn. Verstehe wohl das Beispiel im Handbuch nicht.

    [edit3] Achso, das Beispiel zu natsort befindet sich unter dem Beispiel zu sort()
    http://hallophp.de

    Kommentar


    • #3
      natsort habe ich auch schon probiert, aber da kommt folgendes dabei raus:

      natsort()

      d1_3.jpg,d1_5.jpg,d1_10.jpg,d1_1.jpg,d1_4a.jpg,d1_ 9.jpg


      sort()

      d1_1.jpg,d1_10.jpg,d1_2.jpg,d1_3.jpg,d1_4.jpg

      kA wieso natsort so extrem durcheinander ist...

      Kommentar


      • #4
        sort() sortiert schon richtig.

        1 kommt vor 2 und somit haben alle String mit _1 vorrang vor _2 wozu auch _10 gehört.

        d1_01.jpg
        d1_02.jpg
        d1_04a.jpg
        d1_10.jpg

        so würdest du korrekte Ergebnisse erhalten wnen du anch Strings sortierst.

        Wenn eine Umbenennung der Dateien nicht möglich ist musst du eben ein neues Array bauen indem nur die Zahlen stehen und dann mit SORT_NUMERIC sortieren und eine Beziehung von Zahl zu Dateiname herstellen.

        Aber damit hast du dann spätestens bei 4a wieder ein Problem wegen dem "a".

        Edit: natsort() müsste das Problem eigentlich lösen.

        Wie gibst du das Array denn aus? Weil natsort behält die Schlüssel bei d.h. wenn du mit einer gewöhnlichen for() Schleife drüber gehst erreichst du gar nichts.
        "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

        Kommentar


        • #5
          kA wieso natsort so extrem durcheinander ist...
          Kann ich nicht bestätigen. SOrtiert einwandfrei.
          PHP-Code:
          <pre><?

          $a=array (

          'd1_1.jpg',
          'd1_2.jpg',
          'd1_4a.jpg',
          'd1_10.jpg',
          'd1_3.jpg',
          'd1_5.jpg',
          'd1_10.jpg',
          'd1_1.jpg',
          'd1_4a.jpg',
          'd1_ 9.jpg' ,
          );

          shuffle($a);
          natsort ($a);
          print_r ($a);
          Code:
          Array
          (
              [8] => d1_1.jpg
              [3] => d1_1.jpg
              [4] => d1_2.jpg
              [0] => d1_3.jpg
              [1] => d1_4a.jpg
              [6] => d1_4a.jpg
              [5] => d1_5.jpg
              [7] => d1_ 9.jpg
              [9] => d1_10.jpg
              [2] => d1_10.jpg
          )
          --

          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


          --

          Kommentar


          • #6
            danke für eure hilfe. ich habe viel versucht, irgendwo scheint der hund begraben zu sein. im endeffekt habe ich nun die bildernamen umbenannt und verwende sort(), es funktioniert nun ohne probleme.

            Kommentar

            Lädt...
            X