• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

sortierung von dateiliste

Space Vampire

Senior HTML'ler
moin
ich hab mir ne ausgabe für eine dateiliste gebastelt und das so gelöst
PHP:
<?php 
$verzeichnis = 'content/diary/archiv/'; 
foreach (new DirectoryIterator( $verzeichnis ) as $datei)
{
    if (!$datei->isDir() && !$datei->isDot())
    {
        echo "<a href='" .$verzeichnis.$datei->getFilename(). "'>" .substr($datei->getFilename(), 0, 10). "</a><br>";
        echo "\n";    }} 
?>
nun kommt die liste aber unsortiert.
es sind alles nummerische datums-dateinamen nach dem muster
2009-10-07
jahr, monat, tag
jetzt möchte ich die natürlich in logischer reihenfolge sortiert haben mit dem neuesten zuerst.
kann mir da jemand helfen?
 
keiner ne lösung parat? :shock:
Die Klasse ist mir leider unbekannt.
Ich würde es so machen, dass ich, da du ja eh nur den Dateinamen benutzt, die Dateinamen alle in einem Array reinpacke und diesen denn soritere. (Oder eine simplere Methode benutze, zb scandir oder glob)

Vielleicht meldet sich ja noch irgendwer, der mit dieser Klasse vertraut ist.

Mfg
 
Direkt mit dem Iterator geht's meines Wissens nicht.

Die Zahl (der Zahl? ;)) folgend zum Beispiel mit usort:

PHP:
<?php

$verzeichnis = './';
$tmp = array();

foreach (new DirectoryIterator( $verzeichnis ) as $datei)
{
    if (!$datei->isDir() && !$datei->isDot())
    {
        $tmp[] = array('path'  => $verzeichnis.$datei->getFilename(),
                       'title' => substr($datei->getFilename(), 0, 10));
    }
}

function cb($a, $b)
{
    return strcmp($a['title'], $b['title']);
}

usort($tmp, 'cb');

foreach ($tmp as $entry) {
    echo "<a href='" . $entry['path'] . "'>" . $entry['title'] . "</a><br>";
    echo "\n";
}

Edit: http://www.ruempler.eu/2008/08/09/php-sortingiterator/ <- Sieht zumindest sinnvoll aus.
 
genial mermshaus :D damit hast du wahrscheinlich auch noch ein anderes problem von mir gelöst...

eine frage noch:
geht das auch noch andersherum sortiert?
 
Zurück
Oben