usort сортирует массив в обратном порядке

botan-limon

Новичок
usort сортирует массив в обратном порядке

PHP:
function my_sort( $a, $b ) {      
   if( $a['rating'] == $b['rating'] ) return 0;     
   return ($a['rating'] > $b['rating']) ? -1 : 1;  
}   

usort( $array, "my_sort" );
Если все элементы массива имеют ['rating'] == 0, то usort почему-то выстраивает их в обратном порядке.
Что не так делаю?
 

zerkms

TDD infected
Команда форума
потому что ты в функции кроме как относительно ключа `rating` термин "порядок" никак не определяешь, а подобные функции не гарантируют исходный порядок элементов с одинаковыми значениями.
 

zerkms

TDD infected
Команда форума
botan-limon
расскажи о задаче в общем и о том, почему исходный порядок (когда элементы в принципе перемешаны) важен.
 

botan-limon

Новичок
zerkms

задача отсортировать двумерный массив по ключу rating в порядке убывания.
изначально массив выбран из базы с ORDER BY id и нужно сохранить исходный порядок.

пока писал текст выше понял, что нужно сделать еще один ключ id и также учитывать его в функции сравнения.

спасибо.
 

Вурдалак

Продвинутый новичок
Потому что он хочет отсортировать результат выборки, обрезанный LIMIT'ом.

-~{}~ 28.08.10 22:56:

Я так понял.
 

dimagolov

Новичок
Вурдалак, что мешает тогда выборку делать в под-запросе а сортировку по 2-м полям во внешнем?
 

Вурдалак

Продвинутый новичок
dimagolov, выборку с сортировкой по одному полю в подзапросе, а по другому — во внешнем, если быть точным. Да ничё, думаю.
 
Сверху