可能重复:
File creation time
在PHP中,如何检索包含在按创建日期(或任何其他排序机制)排序的文件夹中的文件?
According to the doc, readdir()函数:
文件名在。中返回 它们存储的顺序 文件系统。
答案 0 :(得分:8)
将它们的信息保存到数组中,对数组进行排序,然后循环数组
if($h = opendir($dir)) {
$files = array();
while(($file = readdir($h) !== FALSE)
$files[] = stat($file);
// do the sort
usort($files, 'your_sorting_function');
// do something with the files
foreach($files as $file) {
echo htmlspecialchars($file);
}
}
答案 1 :(得分:5)
这是我的解决方案:
$fileList = array();
$files = glob('home/dir/*.txt');
foreach ($files as $file) {
$fileList[filemtime($file)] = $file;
}
ksort($fileList);
$fileList = array_reverse($fileList, TRUE);
print_r($filelist);
输出是这样的:
array(
(int) 1340625301 => '/home/dir/file15462.txt',
(int) 1340516112 => '/home/dir/file165567.txt',
(int) 1340401114 => '/home/dir/file16767.txt'
)
然后使用“foreach”循环获取所需的文件。
答案 2 :(得分:3)
您可以将文件存储在数组中,其中键是文件名,值是要排序的值(即创建日期),并在该数组上使用asort()
。
$files = array(
'file1.txt' => 1267012304,
'file3.txt' => 1267011892,
'file2.txt' => 1266971321,
);
asort($files);
var_dump(array_keys($files));
# Output:
array(3) {
[0]=>
string(9) "file2.txt"
[1]=>
string(9) "file3.txt"
[2]=>
string(9) "file1.txt"
}
答案 3 :(得分:2)
似乎有一个非常强大的脚本来执行此处引用的所有内容:preg_find。我从来没有使用它,但它看起来不错。
sorted in by filesize, in descending order?
$files = preg_find('/./', $dir,
PREG_FIND_RECURSIVE| PREG_FIND_RETURNASSOC |
PREG_FIND_SORTFILESIZE|PREG_FIND_SORTDESC);
$files=array_keys($files);
答案 4 :(得分:0)
您可以使用scandir()
将目录内容读入数组,然后使用fileatime()
或filectime()
分别查看每个文件的访问权限或创建时间。从这里对数组进行排序不应该太难。
答案 5 :(得分:-2)
使用shell_exec在操作系统级别执行命令?在linux / unix上这可能有用;
$output=shell_exec('ls -t1');