Цикл по каталогу в обратном направлении - PullRequest
0 голосов
/ 10 ноября 2009

Хей, я использую простой взгляд, чтобы получить имена файлов из директории

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

        }
    }
}

файлы выводятся в последнюю очередь, самые старые - в первую очередь.

Как я могу изменить это так, чтобы новейшие файлы были первыми?

Ответы [ 3 ]

4 голосов
/ 10 ноября 2009

Получить список файлов в массив, затем array_reverse () it:)

1 голос
/ 10 ноября 2009

самый простой вариант - вызвать команду оболочки

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

если по какой-то причине это не работает, попробуйте glob () + sort ()

$files = glob("*");
usort($files, create_function('$a, $b', 'return filemtime($b) - filemtime($a);'));
0 голосов
/ 10 ноября 2009

Нажатие каждого файла в массиве с ключом mtime позволяет выполнить обратную сортировку этого массива:

<?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";
}

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...