сортировка есть(http://php.net/usort, к примеру), не думаю, что медленная. тут скорее проблема в ускорении получения не только имени файла(полученного при помощи, скажем, http://php.net/readdir), сколько в получении времени модификации(http://php.net/filemtime), чтоб процесс проходил достаточно быстро. а там уже пихаем данные в массив, каждый элемент котого - ассоциативный массив с именем и датой модификации. потом уже пишем функцию, которую будем использовать для сравнения двух таких массив-структур и используем usort.
Код | function compare_two_file_records($first, $second) { if(!is_array($first) OR !is_array($second) OR !isset($first['change_time']) OR !isset($second['change_time'])) die('incorrect file-record values!'); else { if($first['change_time'] == $second['change_time']) return $first['name']> $second['name']? -1: 1; else return $first['change_time']> $second['change_time']? -1: 1; } }
define('TARGET_DIR','/some/my/files/'); $files= array(); while(($nextfile= readdir(TARGET_DIR)) !== false) { $files[]= array('name'=> $nextfile, 'change_time'=> filemtime($nextfile)); } usort($files,'compare_two_file_records');
|
Добавлено через 1 минуту и 24 секунды
Цитата(maximus666 @ 30.12.2007, 20:31 ) | причем список должен быть отсортирован как по имени так и по дате модификации. |
смысл сортировки в первую очередь по имени мне неизвестен. откуда у тебя возьмутся два одинаковых имени файла? а так как одинаковых имен быть не может, то сортировка по времени изменения не нужна. |