Есть следующий массив:
Постановление главы администрации Краснодарского края от 13.09.2010 N 871
Постановление главы администрации Краснодарского края от 25.04.2006 N 285
Постановление главы администрации Краснодарского края от 22.02.2005 N 149
Постановление главы администрации Краснодарского края от 17.07.2006 N 621
Постановление главы администрации Краснодарского края от 06.02.2009 N 79
Постановление главы администрации Краснодарского края от 03.09.2007 N 796
Постановление главы администрации Краснодарского края от 08.08.2007 N 725
Постановление главы администрации Краснодарского края от 19.12.2008 N 1217
Постановление главы администрации Краснодарского края от 24.10.2006 N 923
...
Необходимо отсортировать следующим образом: вверху должны идти документы с самой свежей датой, если у документов одинаковая дата, то вверху должен идти документ с максимальным номером.
Добавлено:
Причем, как вы понимаете, под свежей датой имеется
1) самый большой год
2) потом самый большой месяц
3) потом самый большой день
т.е. в строке (13).(09).(2010) N (1313) необходимо сначала сравнивать 3-й элемент, потом 2-й, потом 1-й, а потом 4-й.
Добавлено:
Постановление главы администрации Краснодарского края от 13.09.2010 N 871
Постановление главы администрации Краснодарского края от 25.04.2006 N 285
Постановление главы администрации Краснодарского края от 22.02.2005 N 149
Постановление главы администрации Краснодарского края от 17.07.2006 N 621
Постановление главы администрации Краснодарского края от 06.02.2009 N 79
Постановление главы администрации Краснодарского края от 03.09.2007 N 796
Постановление главы администрации Краснодарского края от 08.08.2007 N 725
Постановление главы администрации Краснодарского края от 19.12.2008 N 1217
Постановление главы администрации Краснодарского края от 24.10.2006 N 923
...
Необходимо отсортировать следующим образом: вверху должны идти документы с самой свежей датой, если у документов одинаковая дата, то вверху должен идти документ с максимальным номером.
Добавлено:
Сообщение автоматически объединено:
Причем, как вы понимаете, под свежей датой имеется
1) самый большой год
2) потом самый большой месяц
3) потом самый большой день
т.е. в строке (13).(09).(2010) N (1313) необходимо сначала сравнивать 3-й элемент, потом 2-й, потом 1-й, а потом 4-й.
Добавлено:
Сообщение автоматически объединено:
OffTopic:
Офф. На Perl это делается примерно так:
@array=sort{($a=~ /(\d+) N/)[0] <=> ($b=~ /(\d+) N/)[0]
||
($a=~ /\.(\d+)\./)[0] <=> ($b=~ /\.(\d+)\./)[0]
||
($a=~ / от (\d+)/)[0] <=> ($b=~ /от (\d+)/)[0]
||
($a=~ / N (\d+)/)[0] <=> ($b=~ / N (\d+)/)[0]}@unsorted;
Офф. На Perl это делается примерно так:
@array=sort{($a=~ /(\d+) N/)[0] <=> ($b=~ /(\d+) N/)[0]
||
($a=~ /\.(\d+)\./)[0] <=> ($b=~ /\.(\d+)\./)[0]
||
($a=~ / от (\d+)/)[0] <=> ($b=~ /от (\d+)/)[0]
||
($a=~ / N (\d+)/)[0] <=> ($b=~ / N (\d+)/)[0]}@unsorted;