我有一个名为'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
我想从'backup'目录中获取最旧的文件
比如'blog-backup_on_11-April-2012_at_08-22-18AM.zip',它是目录中最早的文件。
我尝试this link但无法处理逻辑。
请提出一些建议,如何获取此文件?
答案 0 :(得分:2)
$dir = 'path/to/backup/';
foreach (glob($dir.'*.zip') as $filename) {
$time = filemtime($filename);
$files[$time] = $filename;
}
krsort($files);
echo reset($files);
答案 1 :(得分:1)
试试这个:
$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);
}
答案 2 :(得分:0)
我不确定为什么之前的答案提到krsort();
,因为它实际上使第一个元素成为最新的文件。使用
ksort($file_arr);
echo reset($file_arr);
将回显最旧的文件。已经提到的开始代码不需要更改。
答案 3 :(得分:0)
除非有人可以制作某种明确的单行,我在这里还没有看到。我更喜欢可读和易懂的算法,它们不依赖于你记住各种排序函数的功能。
$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";