通过目录向后循环

时间:2009-11-10 09:30:00

标签: php directory loops

使用简单的外观干扰所有我从dir获取文件名

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

        }
    }
}

文件正在输出新闻,最早,最早。

如何解决这个问题,以便最新的文件首先出现?

3 个答案:

答案 0 :(得分:4)

将文件列表导入数组,然后将array_reverse()获取:)

答案 1 :(得分:1)

最简单的选择是调用shell命令

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

如果出于某种原因,这不起作用,请尝试使用glob()+ sort()

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

答案 2 :(得分:0)

将数组whit 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";
}

?>