如何在PHP中获取目录中的最后X个文件?
我使用此代码获取最后一个文件,但我如何获取最后X个文件?
我的代码:
$path = "/path/test/";
$latest_ctime = 0;
$latest_filename = '';
$d = dir($path);
while (false !== ($entry = $d->read())) {
$filepath = "{$path}/{$entry}";
// could do also other checks than just checking whether the entry is a file
if (is_file($filepath) && filectime($filepath) > $latest_ctime) {
$latest_ctime = filectime($filepath);
$latest_filename = $entry;
}
}
答案 0 :(得分:1)
<?php
$arr = array();
$path = "/Users/alokrajiv/Downloads/";
$d = dir($path);
if ($handle = opendir($path)) {
while (false !== ($entry = readdir($handle))) {
if ($entry != "." && $entry != "..") {
$filepath = "{$path}{$entry}";
$tmp = array();
$tmp[0] = $filepath;
$tmp[1] = filemtime($tmp[0]);
array_push($arr, $tmp);
}
}
closedir($handle);
}
function cmp($a, $b){
$x = $a[1];
$y = $b[1];
if ($x == $y) {
return 0;
}
return ($x > $y) ? -1 : 1;
}
usort($arr, 'cmp');
$x = 10;
while(count($arr)>$x){
array_pop($arr);
}
var_dump($arr); //has last modified 10 files
按降序排序然后弹出,直到剩下10个元素。
答案 1 :(得分:1)
可能会更简单一些:
$files = array_filter(glob("$path/*.*"), 'is_file');
array_multisort(array_map('filectime', $files), SORT_DESC, $files);
$result = array_slice($files, 0, $x);
glob()
的所有文件,并使用is_file()
filectime()
降序$x
个文件数