对,这真的让我感到沮丧。
当我在下面发布根目录中的index.php文件时,我有3个方向(dir1 / dir2 / dir3)。
每个文件夹中都有一个图像列表,它们会自动命名并放置在每个文件夹中。这些内容显示在一个表中,分为3列,其前还有2列,以显示行数以及每个文件的日期和时间。假定3个目录的第一列由DESC排序,以首先显示最新文件。但是,它以错误的顺序显示日期和时间,例如在顶部显示2月28日(时间),然后在2月28日(时间)显示一个,然后在2月26日(时间)显示两个,然后在28号显示更多! ?在这里应该首先对最新日期进行排序,然后在下面对最旧的日期进行排序。谁能帮忙?
truthy
答案 0 :(得分:0)
scandir
按字母顺序升序或降序。但是您要按上次修改日期排序。因此,您需要对其应用排序功能。例如,您可以使用filemtime
和uasort
$items = glob ...
uasort($items, function($a,$b) { return filemtime($a) > filemtime($b); })
将filemtime($a) > filemtime($b)
翻转为filemtime($a) < filemtime($b)
进行asc / desc
http://php.net/manual/en/function.scandir.php#refsect1-function.scandir-parameters
答案 1 :(得分:0)
这就是我一直在使用的内容(我已经使用了一段时间的片段):
public function scanLatestFile($directory) {
// ignore any files that you don't want scanned
$ignoredFiles = array('.index.php', '.htaccess');
// Create new array to store the list of files
$filesToSearch = array();
// Scan the directory passed in
foreach (scandir($directory) as $file) {
if (in_array($file, $ignoredFiles)) continue;
// Add the filemtime so you can sort it
$filesToSearch[$file] = filemtime($dir . '/' . $file);
}
// Sort by latest file
arsort($filesToSearch);
$filesToSearch = array_keys($filesToSearch);
// Return latest file if it exists
return ($filesToSearch) ? $filesToSearch : false;
}
这将返回目录中的最新文件,忽略文件也可以排除不需要的任何内容。