PHP:有序目录列表

时间:2010-03-11 21:24:26

标签: php

如何以“上次修改日期”顺序列出目录中的文件? (Linux上的PHP5)

5 个答案:

答案 0 :(得分:14)

function newest($a, $b) 
{ 
    return filemtime($a) - filemtime($b); 
} 

$dir = glob('files/*'); // put all files in an array 
uasort($dir, "newest"); // sort the array by calling newest() 

foreach($dir as $file) 
{ 
    echo basename($file).'<br />'; 
} 

信用goes here

答案 1 :(得分:3)

使用readdir将数据与其filemtime一起保存,从而读取目录中的文件。根据此值对数组进行排序,您将得到结果。

答案 2 :(得分:1)

解决方案是:

  • 使用DirectoryIterator(例如
  • )迭代目录中的文件
  • 对于每个文件,使用SplFileInfo::getMTime
  • 获取其上次修改时间
  • 将所有内容放入数组中,使用:
    • 文件名称为键
    • 修改时间为值
  • 使用asortarsort对数组进行排序 - 具体取决于您希望文件的顺序。


例如,这部分代码:

$files = array();
$dir = new DirectoryIterator(dirname(__FILE__));
foreach ($dir as $fileinfo) {
    if (!$fileinfo->isDot()) {
        $files[$fileinfo->getFilename()] = $fileinfo->getMtime();
    }
}

arsort($files);
var_dump($files);

给我:

array
  'temp.php' => int 1268342782
  'temp-2.php' => int 1268173222
  'test-phpdoc' => int 1268113042
  'notes.txt' => int 1267772039
  'articles' => int 1267379193
  'test.sh' => int 1266951264
  'zend-server' => int 1266170857
  'test-phing-1' => int 1264333265
  'gmaps' => int 1264333265
  'so.php' => int 1264333262
  'prepend.php' => int 1264333262
  'test-curl.php' => int 1264333260
  '.htaccess' => int 1264333259

即。保存我的脚本的目录中的文件列表,最近修改在列表的开头。

答案 3 :(得分:0)

在谷歌上尝试相同的查询,你会更快地得到答案。干杯。 http://php.net/manual/en/function.filemtime.php

答案 4 :(得分:0)