Geriye dizininde Döngü

3 Cevap php

Bir dir dosya adlarını almak için basit bir göz kullanarak Hay bütün im

if ($handle = opendir('news_items/')) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") { 

        }
    }
}

Dosyaları eski ilk, son haberler çıkarılmaktadır ediliyor.

Nasıl ben bu yüzden yeni dosyalar ilk olarak ters olabilir?

3 Cevap

Bir diziye dosya listesini alın, sonra array_reverse () it :)

basit seçenek bir kabuk komutunu çağırmak için

$files = explode("\n", `ls -1t`);

nedense, bu işe yaramazsa, eğer) (topak deneyin + sort ()

$files = glob("*");
usort($files, create_function('$a, $b', 'return filemtime($b) - filemtime($a);'));

Anahtar olarak bir dizi katiyen mtime her dosyaları iterek sıraladığınız bu diziyi ters izin:

<?php

$files = array();

if ($handle = opendir('news_items/')) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
            $mtime = filemtime('news_items/' . $file);

            if (!is_array($files[$mtime])) {
                $files[$mtime] = array();
            }

            array_push($files[$mtime], $file);
        }
    }
}

krsort($files);

foreach ($files as $mt=>$fi) {
    sort($fi);
    echo date ("F d Y H:i:s.", $mt) . " : " . implode($fi, ', ') . "\n";
}

?>