如何通过文件创建对目录进行排序,最先在PHP 5.2中进行排序?
我在Windows 2000上。
答案 0 :(得分:9)
在Windows上,CTime是创建时间,请使用以下内容:
<?php
$files = array();
foreach (new DirectoryIterator('/path') as $fileInfo) {
$files[$fileInfo->getFileName()] = $fileInfo->getCTime();
}
arsort($files);
此$文件将包含一个文件名数组作为键,ctime作为值。由于可能存在相同的ctimes,我选择了这种向后表示,这会导致$ files中的条目被覆盖。
更新了使用CTime的答案,因为OP澄清了他正在使用Windows。
答案 1 :(得分:6)
你不能在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上使用的Usecase。
编辑:该文件的页面上的一条评论指出,Windows上没有更改时间 , filectime确实会返回创建时间即可。我不是Windows文件系统的专业人士,但使用上述内容可能是你最好的选择。或者,您可以查看COM API以获取ScriptingHost的句柄,并查看是否可以从那里获取创建时间。
答案 2 :(得分:5)
大多数操作系统上都不存在文件创建时间。