【发布时间】:2011-01-06 07:10:36
【问题描述】:
如何按文件创建对目录进行排序,最新的 PHP 5.2 优先?
我使用的是 Windows 2000。
【问题讨论】:
如何按文件创建对目录进行排序,最新的 PHP 5.2 优先?
我使用的是 Windows 2000。
【问题讨论】:
在 windows 上,CTime 是创建时间,使用如下:
<?php
$files = array();
foreach (new DirectoryIterator('/path') as $fileInfo) {
$files[$fileInfo->getFileName()] = $fileInfo->getCTime();
}
arsort($files);
在此之后,$files 将包含一个文件名数组作为键,ctime 作为值。我选择这种反向表示是因为可能存在相同的 ctime,这会导致 $files 中的条目被覆盖。
更新了使用 CTime 的答案,因为 OP 澄清他正在使用 Windows。
【讨论】:
大多数操作系统不存在文件创建时间。
【讨论】:
您不能在 Unix 系统上指定创建日期,但要更改日期,但请参阅下面的 Windows 编辑。
代码如下:
function sortByChangeTime($file1, $file2)
{
return (filectime($file1) < filectime($file2));
}
$files = glob('*'); // get all files in folder
usort($files, 'sortByChangeTime'); // sort by callback
var_dump($files); // dump sorted file list
来自filectime 上的 PHP 手册注释:
注意:另请注意,在某些 Unix 文本文件的 ctime 被引用 作为创建时间 文件。这是错误的。没有 大多数 Unix 文件的创建时间 Unix 文件系统。
请参阅link in Antti's answers 了解 ctime、atime 和 mtime 的差异,并确定最适合您在 Unix 上使用的用例。
编辑:filectime 页面上的一个 cmets 指出 在 Windows 上没有更改时间,并且 filectime 确实返回了创建时间。我不是 Windows 文件系统的专家,但使用上面的可能是你最好的选择。或者,您可以查看 COM API 以获取 ScriptingHost 的句柄,看看是否可以从那里获取创建时间。
【讨论】: