按日期排序scandir降序

时间:2011-03-19 10:48:32

标签: php

我正在使用此代码列出目录

foreach(scandir('back/1') as $folder){
    if (in_array($folder, array('.', '..'))) continue;
    echo basename($folder); // get folder's name
}

但我想按修改时间对输入的目录进行排序。

怎么做。

此致

2 个答案:

答案 0 :(得分:1)

$files = glob('back/1/*',GLOB_ONLYDIR);
foreach ($files as $f){
  $tmp[basename($f)] = filemtime($f);
}
asort($tmp);
$files = array_keys($tmp);

答案 1 :(得分:0)

我正在通过降低最后修改的时间戳来适应您的常识答案。排序功能来自PHP glob spec page上约瑟夫·点·莫蒂的评论。

if (!function_exists('sort_by_mtime'))   {
    function sort_by_mtime($file1,$file2) {
        $time1 = filemtime($file1);
        $time2 = filemtime($file2);
        if ($time1 == $time2) {
            return 0;
        }
        return ($time1 < $time2) ? 1 : -1;
    }
}

$files = glob('back/1/*',GLOB_ONLYDIR);
foreach ($files as $f){
  $tmp[basename($f)] = filemtime($f);
}
usort($tmp,"sort_by_mtime");
$files = array_keys($tmp);