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 "" .substr($datei->getFilename(), 0, 10). "
";
echo "\n"; }}
?>[/PHP]
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‘] . „
“;
echo „\n“;
}[/php]
Edit: http://www.ruempler.eu/2008/08/09/php-sortingiterator/ ← Sieht zumindest sinnvoll aus.
genial mermshaus damit hast du wahrscheinlich auch noch ein anderes problem von mir gelöst…
eine frage noch:
geht das auch noch andersherum sortiert?
[php]return strcmp($a[‚title‘], $b[‚title‘]) * -1;[/php]
strcmp gibt -1, 0 oder +1 zurück. Okay, nicht ganz:
Returns < 0 if str1 is less than str2 ; > 0 if str1 is greater than str2 , and 0 if they are equal.
nochmals vielen dank.
jetzt ist es genau so wie ich es haben wollte
PRR.FM - Phoenix Resurrection Radio - Music For Eternity