【问题标题】:Show all file in directory with most recent links first首先显示具有最新链接的目录中的所有文件
【发布时间】:2013-05-30 11:03:37
【问题描述】:

我正在编写一个脚本,该脚本将显示所有文件并在给定目录中创建链接,但我希望最近上传的文件位于列表顶部。我在这个网站上搜索了一个答案或类似的问题,但一无所获。

这是我目前的代码:

<?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); ?>

如果有任何帮助或建议,我将不胜感激。

【问题讨论】:

    标签: php directory


    【解决方案1】:

    将文件与上次修改时间一起存储在一个数组中,然后在显示之前对数组进行排序。尝试以下,未经测试:

    $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;
    }
    

    【讨论】:

    • 这一行出现错误 $fileArray[] = array('fileName' => $read, 'lastModified' => filemtime($dir));
    • @Redstone "我得到一个错误" 没有帮助。什么错误?此代码未经测试,但它应该让您了解如何解决您的问题。我已经用进一步阅读的链接对其进行了评论。您应该尝试了解如何解决它,而不是一味地复制粘贴。告诉我错误是什么,我会看看。
    • 我现在正在阅读“filemtime”和“usort”,我认为这可能是我需要的,但每次使用它时都会出现以下错误(filemtime() 期望参数 1 为字符串)。
    • 好的,我让 filemtime 工作了,但是它没有显示最近上传的内容,而是显示了第一个被修改的内容。有什么可以检查上传时间的吗?将最近上传的文件放在顶部,即使该文件在另一个已经上传的文件之前被修改。
    • 太好了,很高兴您能顺利完成。看起来我们只需要获取创建时间而不是上次修改时间。这取决于操作系统 - Windows 有创建时间,但大多数 Unix 文件系统不存储创建日期。请参阅:stackoverflow.com/questions/4401320/…。如果您不在 Windows 上,则可能无法使用。
    【解决方案2】:

    我使用scandir。说明如下。

    【讨论】:

    • 如何按上次修改时间排序?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-06
    • 1970-01-01
    • 2013-06-22
    • 2017-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多