Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > сортировка по дате изменения файлов


Автор: ScreaM [13r] 30.3.2005, 19:41
function mysortq($a, $b) {

if (date("Y-m-j H:i:s", filemtime($a)) < date("Y-m-j H:i:s", filemtime($b))) return -1;
if (date("Y-m-j H:i:s", filemtime($a)) == date("Y-m-j H:i:s", filemtime($b))) return strcmp($a, $b);
return 1;
}


function create_sort_mas_files($news_path,$cat){


$handle = opendir($news_path.$cat);
while ($file = readdir($handle)) {
if (!is_file($news_path.$cat.$file)) continue;
$files[] = $file;


}
closedir($handle);
usort($files, "mysortq");
return $files;
}

Автор: Mal Hack 30.3.2005, 19:48
А почему бы просто не загрузить массив имен файлов и даты модификации...
А потом array_multisort по дате

Автор: ScreaM [13r] 1.4.2005, 08:39
код напиши плз....у как я писал - у меня не сортирует...
Я попробовал ещё так:
Код

function get_name_date_files ($news_path,$cat){

    $handle = opendir($news_path.$cat);
    while ($file = readdir($handle)) {
        if (!is_file($news_path.$cat.$file)) continue;

        $d_file[]=date("Y-m-j H:i:s", filemtime($news_path.$cat.$file));
        $n_file[] = $file;

        $result = array("namec" => $n_file,
                    "datec" => $d_file);
                        

    }
    closedir($handle);
    return $result;
}

function mysortq($a, $b) { 
    
      if ($a < $b) return -1; 
      if ($a == $b) return 0; 
      return 1; 
}

// и сортировка:

               $ar_com_date=get_name_date_files($news_path,$comm_cat);
               usort($ar_com_date['datec'], "mysortq");




Всё хорошо, но не сохраняет ключи, т.е. даты сортируются, а имена остаются прежними.

Автор: InfMag 3.4.2005, 08:42
Я бы просто перевел время в time(). smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)