|
|
|
| Народ, не совсем понятен принцип работы, фнкции uksort().
Когда аргумент-функция возвращает 1,0,-1, то как она поступает с парой над которой происходит сравнение. | |
|
|
|
|
|
|
|
для: demonow
(31.01.2012 в 11:59)
| | Либо оставляет без изменений, либо меняет положение элементов местами. | |
|
|
|
|
|
|
|
для: cheops
(31.01.2012 в 12:05)
| | Ну вот есть массив
$files=array("bogdan.txt","my litle story.txt","my cat.jpg","my dog.jpg","This is SPARTA!!!.txt");
Допустим нужно отсортировать так что бы jpg файлы были в конце списка.
Пишем:
function cmp($a,$b)
{
if (strpos($a,"jpg") && !strpos($b,"jpg")) return 1;
if (!strpos($a,"jpg") && strpos($b,"jpg")) return -1;
}
uksort($files,"cmp");
|
А как дальше она переставляет элементы мне не понятно.
Можно поэтапно пож. обьяснить? | |
|
|
|
|
|
|
|
для: demonow
(01.02.2012 в 14:29)
| | Ну довольно сомнительная функция для сортировки... так как здесь фактически нет сортировки в для случаев, когда оба файлы имеют расширение jpg или оба файла имеют другие расширения. Кроме того, последовательность jpg может быть не в расширении.
>А как дальше она переставляет элементы мне не понятно.
Этот алгоритм в исходных кодах, от пользователя нужен лишь критерий. Вы собственно можете не использовать готовые алгоритмы, если они вам не нравятся, а реализовать свой собственный: пузырьковую или быструю сортировку... просто эта задача возникает так часто, что для неё реализовали готовые функции практически во всех языках программирования. | |
|
|
|