如何基于上次修改php的日期回显目录中的所有文件

时间:2015-01-23 18:56:47

标签: php file directory echo

我使用下面的代码将目录中的所有文件回显到页面上。回显的文件顺序是随机顺序,即

档案3

档案1

文件2

而不是

档案1

文件2

档案3


如何制作,以便回显的文件基于创建或上传的时间。最新文件将显示在列表顶部,最旧的文件将显示在底部

if ($handle = opendir('.')) {

    while (false !== ($entry = readdir($handle))) {

        if ($entry != "." && $entry != ".." && !in_array($entry, $blacklist)) {
            echo "<p>$entry\n</p>";
        } 



    }

    closedir($handle);
}

3 个答案:

答案 0 :(得分:2)

这应该适合你:

(这里我从glob()的目录中获取所有文件,然后用用户定义的函数usort()对其进行排序,并将上次修改的时间与filemtime()进行比较)

<?php

    function cmp($a, $b) {
        if (filemtime($a) == filemtime($b))
            return 0;

        return (filemtime($a) < filemtime($b)) ? -1 : 1;
    }


    $files = glob("*.*");
    usort($files, "cmp");

    foreach($files as $file)
        echo $file . "<br />";

?>

答案 1 :(得分:0)

看一下PHP4 +的 filemtime 。你想在这里做两件事:

  1. 以数组
  2. 获取文件的文件时间
  3. 根据filemtime比较对其进行排序

答案 2 :(得分:0)

下次尝试在stackoverflow上搜索与您类似的问题:)

    $files = array();
if ($handle = opendir('.')) {
while (false !== ($file = readdir($handle))) {
       if ($file != "." && $file != "..") {
          $files[filemtime($file)] = $file;
       }
   }
   closedir($handle);



// sort ksort($files); // find the last modification $reallyLastModified = end($files);


foreach($files as $file) { $lastModified = date('F d Y, H:i:s',filemtime($file)); if(strlen($file)-strpos($file,".swf")== 4){ if ($file == $reallyLastModified) { // do stuff for the real last modified file } echo "$file$lastModified"; } }

未经测试

SOURCE