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


Автор: Анальгин 2.12.2003, 10:05
Есть каталог который содержит txt-файлы (трафик сотрудников за день).

Например:

d011203.txt
d281103.txt
d271103.txt
.....

Нужно обработать эти файлы, начиная с "самого свежего" и вниз.. Если использую sort (), то в массиве они располагаются так

d011203.txt
d261103.txt
d271103.txt
d281103.txt
.....
А необходим такой порядок как я написал первый раз. От "большего к меньшему"


Автор: MuToGeN 2.12.2003, 10:49
Можно с помощью usort().
Для этого пишешь свою функцию сравнения, типа
Код
function mySort($date1,$date2){
 $day1=substr($date1,1,2);
 $day2=substr($date2,1,2);
 $month1=substr($date1,3,2);
 $month2=substr($date2,3,2);
 $year1=substr($date1,5,2)+2000;
 $year2=substr($date2,5,2)+2000;
 $timestamp1=mktime(0,0,0,$month1,$day1,$year1);
 $timestamp2=mktime(0,0,0,$month2,$day2,$year2);
 return ($timestamp1<$timestamp2)?-1:1;
}
$dates=Array("d011203.txt","d281103.txt","d271103.txt");
usort($dates,"mySort");

Автор: Vaulter 2.12.2003, 11:15

Sort an array in reverse order (PHP 3, PHP 4 )
void rsort ( array array [, int sort_flags] )

Автор: MuToGeN 2.12.2003, 11:34
Не... Оно тут не поможет...

Автор: Vaulter 2.12.2003, 14:55
MuToGeN
Цитата
Не... Оно тут не поможет...

а пичаму?

Автор: MuToGeN 2.12.2003, 16:49
Потому что оно все равно будет сортировать по имени фаила, а первой позицией в имени идет день. Т.е., к примеру, 20е марта будет стоять раньше 22го февраля

Автор: Vaulter 3.12.2003, 07:51
Анальгин
что мешает тебе сделать имена файлов 20030803.txt - то есть GGGGMMDD.txt?
та прогина что траффик считает наверника на перле ведь ;)

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