[PHP] - Problem mit dir()



  • Hi,

    Hab einen Ordner voller Bilder im Format:
    000.jpg 001.jpg 002.jpg ... 0081.jpg

    Die will ich jetzt mit dem hier auslesen:

    $imgdir->rewind();
    		while($file=$imgdir->read()){                         
    			// jpg?
    		  	if(substr($file, strlen($file)-4, strlen($file))==".jpg"){         
    				$fc++;
    				echo $file."<br>";
    			}
    		}
    

    Normalerweise sollte der Output so sein:

    000.jpg
    001.jpg
    002.jpg
    usw ...
    

    Bekomme aber:

    077.jpg
    078.jpg
    028.jpg
    029.jpg
    030.jpg
    031.jpg
    032.jpg
    033.jpg
    034.jpg
    035.jpg
    036.jpg
    037.jpg
    038.jpg
    039.jpg
    079.jpg
    080.jpg
    081.jpg
    000.jpg
    002.jpg
    003.jpg
    004.jpg
    006.jpg
    007.jpg
    008.jpg
    010.jpg
    011.jpg
    012.jpg
    040.jpg
    041.jpg
    042.jpg
    001.jpg
    014.jpg
    015.jpg
    016.jpg
    017.jpg
    018.jpg
    019.jpg
    020.jpg
    021.jpg
    022.jpg
    023.jpg
    024.jpg
    025.jpg
    043.jpg
    ...
    009.jpg
    013.jpg
    

    Woran liegt das?
    In Ordnern mit weniger Bildern geht alles klar!
    Wär doch doof, wenn Bilder in einer anderen Abfolge angezeigt werden als sie zeitlich entstanden sind! 😕 😕

    Danke!



  • Das liegt daran, dass er die Dateien nicht nach Namen sortiert sondern nach Datum. Du musst die Dateien in ein Array lesen und dieses dann per Bubblesort sortieren.



  • Windoof schrieb:

    ... und dieses dann per Bubblesort sortieren.

    Oder mit einem anderen (viel schnelleren) Sortieralgorythmus.

    Zum Sortieren von Arrays in PHP würde ich mir übrigens mal die Funktionen auf dieser Seite anschauen ;).



  • ob die wirklich schneller sind weiß ich nicht, ich vermute eher, dass da nichts weiter als Bubblesort hinter steht.


  • Mod

    Windoof schrieb:

    ob die wirklich schneller sind weiß ich nicht, ich vermute eher, dass da nichts weiter als Bubblesort hinter steht.

    bubblesort ist so ziemlich der lahmste sortier algo den ich kenne.
    warum sollte php den verwenden?



  • Windoof schrieb:

    ob die wirklich schneller sind weiß ich nicht, ich vermute eher, dass da nichts weiter als Bubblesort hinter steht.

    Da schließ ich mich Shades Frage an: Warum sollte PHP einen so lahmen Sortieralgorythmus verwenden, wenn es doch auch leicht zu implementierende viel schnellere Sortieralgorythmen gibt??



  • Hi,

    die anderen Sortieralgorithmen bauen auch nicht auf BuubleSort auf.
    Während BubbleSort einfach nur alle Elemente durchgeht und bei Bedarf die beiden Elemente vertauscht und dadurch das größte nach rechts verschiebt, sodass man danach einen Durchlauf bis n-1 macht, arbeitet z.B. QuickSort so, dass es - üblericherweise die Mitte - ein Vergleichselement bestimmt und dann von links das erste Element sucht, das größer ist als der Vergleichswert, und von rechts das erste, das kleiner als der Vergleichswert, ist, sucht usw.

    Quicksort hat sich bei den Sortieralgorithmen für größere Datenmengen als der schnellste Algorithmus bewährt.

    MfG Eisflamme



  • Mis2com == Eisflamme? *grübel*


Anmelden zum Antworten