САМОУЧИТЕЛЬ PHP 4




Сортировка по ключам при помощи функции uksort()


Довольно часто нам приходится сортировать что-то по более сложному критерию, чем просто по алфавиту. Например, пусть в $Files хранится список имен файлов и подкаталогов в текущем каталоге. Возможно, мы захотим вывести этот список не только в лексикографическом порядке, но также и чтобы все каталоги предшествовали файлам. В этом случае нам стоит воспользоваться функцией uksort(), написав предварительно функцию сравнения с двумя параметрами, как того требует uksort().

О функциях мы поговорим в главе 14, а пока, я надеюсь, все должно быть ясно из примера (листинг13.1).

Листинг 13.1. Сортировка с помощью пользовательской функции

// Ýòà ôóíêöèÿ äîëæíà ñðàâíèâàòü çíà÷åíèÿ $f1 è $f2 è âîçâðàùàòü:

// -1, åñëè $f1<$f2,

//  0, åñëè $f1==$f2

//  1, åñëè $f1>$f2

// Ïîä < è > ïîíèìàåòñÿ ñëåäîâàíèå ýòèõ èìåí â âûâîäèìîì ñïèñêå

function FCmp($f1,$f2)

{  // Каталог âñåãäà ïðåäøåñòâóåò ôàéëó

   if(is_dir($f1) && !is_dir($f2)) return -1;

   // Ôàéë âñåãäà èäåò ïîñëå каталога

   if(!is_dir($f1) && is_dir($f2)) return 1;

   // Èíà÷å ñðàâíèâàåì ëåêñèêîãðàôè÷åñêè




Содержание  Назад  Вперед