Как узнать самый старый файл из каталога??? (PHP)

У меня есть каталог с именем «резервная копия»

он содержит следующие файлы (с некоторыми конкретными деталями)

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

Я хочу получить самый старый файл из каталога «резервной копии».

Я попробовал эту ссылку, но не смог справиться с логикой.

Пожалуйста, дайте какое-нибудь предложение, как получить этот файл?


person Frank    schedule 11.04.2012    source источник
comment
См. stackoverflow.com/questions/ 1785039/   -  person André    schedule 11.04.2012


Ответы (4)


попробуй это:

    $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);
    }
person izeed    schedule 11.04.2012

Я не уверен, почему в предыдущих ответах упоминается krsort();, так как это фактически делает первый элемент самым новым файлом. С использованием

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

будет отображать самый старый файл. Начальный код, как уже упоминалось, менять не нужно.

person wpg4665    schedule 22.02.2013

Разве что можно сделать четкую остроту какую-то, чего я здесь пока не вижу. Я предпочитаю читаемые и понятные алгоритмы, которые не полагаются на то, что вы помните, что делают различные функции сортировки.

$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";
person ftrotter    schedule 01.02.2018

person    schedule
comment
glob() возвращает полный путь, включая $dir, поэтому я думаю, что это должен быть filemtime($filename); без $dir, верно? - person Christopher K.; 16.10.2014