一尘不染

在PHP中按日期对文件排序

php

我目前有一个index.php文件,该文件允许我输出同一目录内的文件列表,输出显示名称,然后使用filemtime()函数显示文件修改的日期。我现在的问题是,我将如何对输出进行排序以显示最新的修改后的文件?,我已经思考了一段时间了。如果仅通过mysql交互进行操作,则完全没有问题。请给我一个示例,说明如何从最新修改的文​​件开始排序和输出文件列表。这就是我现在所拥有的

if ($handle = opendir('.')) {
while (false !== ($file = readdir($handle))) {
       if ($file != "." && $file != "..") {
        $lastModified = date('F d Y, H:i:s',filemtime($file));
          if(strlen($file)-strpos($file,".swf")== 4){
            echo "<tr><td><input type=\"checkbox\" name=\"box[]\"></td><td><a href=\"$file\" target=\"_blank\">$file</a></td><td>$lastModified</td></tr>";
           }
       }
   }
   closedir($handle);
}

阅读 397

收藏
2020-05-26

共1个答案

一尘不染

您需要将文件放入数组中才能排序和查找最后修改的文件。

$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 "<tr><td><input type=\"checkbox\" name=\"box[]\"></td><td><a href=\"$file\" target=\"_blank\">$file</a></td><td>$lastModified</td></tr>";
        }
    }
}

未经测试,但这就是方法。

2020-05-26