php scandir按文件日期排序

时间:2015-03-06 13:28:49

标签: php

我需要帮助,如何按文件日期对下面的代码进行排序?

$dir2 = "flash/$plk/img";        
$plks2 = scandir($dir2);
$plkss2 = array_diff($plks2, array('.', '..'));      
       foreach ($plkss2 as $plk2) {
           echo '<img data-src="flash/'. str_replace('+', '%20', urlencode($plk)) .'/img/' . $plk2 . '" alt="" class="img-responsive lazyload">';
       }

3 个答案:

答案 0 :(得分:7)

这应该适合你:

(我只是使用glob()获取目录的所有文件,然后我使用usort()对数组进行排序,我使用filemtime()比较最后修改和I循环每个带有foreach循环的文件)

<?php

    $files = glob("flash/$plk/img/*.*");
    usort($files, function($a, $b){
        return filemtime($a) < filemtime($b);
    });

    foreach ($files as $plk2) {
       echo '<img data-src="flash/' . str_replace('+', '%20', urlencode($plk)) . '/img/' . $plk2 . '" alt="" class="img-responsive lazyload">';
    }


?>

答案 1 :(得分:0)

你去吧

<?php

$dir = ".";
$dh  = opendir($dir);
while (false !== ($filename = readdir($dh))) {
    $files[] = $filename;
}

$file_array = array();
foreach ($files as $file_name) {
    $file_array[filemtime($file_name)] = $file_name;
}
ksort($file_array);
var_dump($file_array);

?>

答案 2 :(得分:0)

另一个扫描目录保存最新的 5 个文件

public function checkmaxfiles()
{
    $dir = APPLICATION_PATH . '\\modules\\yourmodulename\\public\\backup\\';   // '../notes/';

    $ignored = array('.', '..', '.svn', '.htaccess');

    $files = array();
    foreach (scandir($dir) as $file) {
        if (in_array($file, $ignored)) continue;
        $files[$file] = filemtime($dir . '/' . $file);
    }

    arsort($files);
    $files = array_keys($files);

    $length = count($files);
    if($length < 4 ){
        return;
    }
     for ($i = $length; $i > 4; $i--) {
           echo "Erase : " .$dir.$files[$i];
           unlink($dir.$files[$i]);
     }
}