如何从目录中找出最旧的文件???(菲律宾比索)


How to find out oldest file from a directory??? (PHP)

我有一个名为'backup'的目录

它包含以下文件(带有一些特定的详细信息)

No---File Name----------------------------------------------------------------Date--------------------Time-----------Size
1.  blog-backup_on_11-April-2012_at_08-22-18AM.zip  11-April-2012   08:22:18AM  5.28MB
2.  blog-backup_on_11-April-2012_at_08-25-24AM.zip  11-April-2012   08:25:25AM  5.28MB
3.  blog-backup_on_11-April-2012_at_08-25-46AM.zip  11-April-2012   08:25:47AM  5.28MB
4.  blog-backup_on_11-April-2012_at_08-26-07AM.zip  11-April-2012   08:26:08AM  5.28MB
5.  blog-backup_on_11-April-2012_at_08-27-52AM.zip  11-April-2012   08:27:53AM  5.28MB

我想从"备份"目录中
获取最旧的文件像"blog-backup_on_11-April -2012_at_08-22-18AM.zip"一样,它是目录中最古老的文件。

我尝试了此链接,但无法处理逻辑。

请给出一些建议,如何获取此文件?

$dir = 'path/to/backup/';
foreach (glob($dir.'*.zip') as $filename) {
  $time = filemtime($filename);
  $files[$time] = $filename;
}
krsort($files);
echo reset($files);

试试这个:

    $dir_path = 'c:/my_dir';
    if($handle = opendir($dir_path))
    {
        while(false !== ($entry = readdir($handle)))
        {
            $created = filemtime($dir_path . $entry);
            $myfiles[$created] = $entry;
        }

        krsort($myfiles); //first element is oldest file
        print_r($myfiles);
    }

我不确定为什么前面的答案提到krsort();,因为它实际上使第一个元素成为最新文件。用

    ksort($file_arr);
    echo reset($file_arr);

将回显最旧的文件。前面提到的开始代码不需要更改。

除非有人能做出某种清晰的单行,我在这里还没有看到。我更喜欢可读和可理解的算法,这些算法不依赖于您记住各种排序函数的作用。

$latest_file_time = 0;
foreach(glob("backup/*") as $this_filename){
        $file_changed_time = filemtime($this_filename);
        if($file_changed_time > $latest_file_time){
                $latest_file = $this_filename;
                $latest_file_time = $file_changed_time;
        }
}
echo "latest file time = $latest_file_time latest file name = $latest_file";