我正在编写一个脚本,该脚本将显示所有文件并在给定目录中进行链接,但我希望最近上传的是在列表的顶部。我在这个网站上搜索了一个答案或类似的问题,但没有找到任何东西。
这是我到目前为止的代码:
<?php
$dir = opendir('files/');
while ($read = readdir($dir))
{
if ($read!='.' && $read!='..')
{
echo '<ul style="list-style: none;"><li><a href="files/'.$read.'"target="_blank"><FONT COLOR="#0196e3">'.$read.'</a></li></ul>';
}
}
closedir($dir); ?>
我将感谢任何帮助或建议。 将文件存储在最后一次修改时间的数组中,然后在显示该数组之前对该数组进行排序。试试下面这个未经测试的命令:
$dir = opendir('files/');
$fileArray = array();
while ($read = readdir($dir))
{
if ($read!='.' && $read!='..')
{
// Get the time this directory was last edited and store it in an array
$fileArray[] = array('fileName' => $read, 'lastModified' => filemtime($dir));
}
}
closedir($dir);
// Sort the files
$usort($fileArray, 'compareFiles');
foreach($fileArray as $file)
{
// files sorted now - display them here
}
// Compares the files - see: http://www.php.net/manual/en/function.usort.php
function compareFiles($a, $b)
{
if ($a[lastModified] == $b[lastModified]) {
return 0;
}
return ($a[lastModified] < $b[lastModified]) ? -1 : 1;
}
我使用scandir。