сортировка массива

jzax

Guest
сортировка массива

Сортирую массив по очкам (['score'])
PHP:
function cmp ($a,$b) {
  if ($a['scores']==$b['scores']) return 0;
  return ($a['scores'] < $b['scores']) ? 1 : -1;
  }
  usort($znachenie,"cmp");
Но возникает проблемка... если очки равны, то надо чтобы дальше сортировал по разнице мячей [goal_win] - [goal_lose]...

Щас сортирует вот так (а надо, чтобы команды были наоборот, т.к. разница голов -2 и +4):
1 Аяччо 36 13 12 11 37 - 39 51
2 Канн 36 15 6 15 35 - 31 51

37-39 - разница голов 1 команды (-2), 51 - очки 1 команды
35 - 31 - разница голов 2 команды (+4), 51 - очки 2 команды

Как это реализовать???

ЗЫ. А если равна разница голов, то по наибольшим забитым голам [goal_win]...
 

Фанат

oncle terrible
Команда форума
то есть, ты не понимаешь, что делает приведённый тобой код?
 

agx

Программер :-)
В общем должно быть так: если $a['scores']==$b['scores'], то проверяй
if ($a['goal_win']<$b['goal_win']) и возвращай 1 или -1.
P.S. Пользовательские функции сортировки, насколько я знаю, вообще ничем не отличаются от других, можешь делать в них все, что хочешь. Единственное ограничение - возвращаемый результат.
 

jzax

Guest
А это разве нормально???
1)
PHP:
function cmp ($a,$b) {
  if ($a['scores']==$b['scores']) return 0;
  return ($a['scores'] < $b['scores']) ? 1 : -1;
  }
 usort($znachenie,"cmp");
выводит:
ааа 20-27 50
ббб 22-20 50
Т.е. сортирует по очкам (50), т.к. они равны, то сортирует по имени а,б,в и т.д.

2)
PHP:
function cmp ($a,$b) {
  if ($a['scores']==$b['scores']) return 0;
  return ($a['scores'] < $b['scores']) ? 1 : -1;
  }
// usort($znachenie,"cmp");
выводит:
ббб 22-20 50
ааа 20-27 50
Т.е. сортирует по очкам (50), т.к. они равны, то сортирует по разнице (22-20 и 20-27), т.к. 22-20=+2, а 20-27=-7, то выводит сначала большее значение - +2, а затем меньшее - -7 , т.е. ИМЕННО ТО, ЧТО МНЕ И НУЖНО БЫЛО :)
НО СМУЩАЕТ ВОТ ЭТО:
PHP:
// usort($znachenie,"cmp");
- USORT ВЕДЬ ЗАККОМЕНТИРОВАН, ЕГО НЕТУ...
КАК ТАКОЕ МОЖЕТ БЫТЬ???
Я чего-то не понимаю???...



Фанат
От части, с функциями до конца не разобрался, пока... :) Но я стараюсь... честно-честно...
 

korvin0

моська
jzax
открою тебе СТРАШНУЮ тайну: в твоем коде #2 никто ничего не сортирует, и программа выводит твои записи с очками "просто так"! Не ожидал?.. я тоже.
 

jzax

Guest
1) Хорош, прикалываться...
2) Согласен, облажался немного...

Фанат
Все все поняли, смотри 2) Я просто вывел массив, как он и есть, без сортировки, а думал, что он отсортировался так как мне надо... вот и все...

-~{}~ 05.04.05 22:29:

korvin0
И можно без иронии, я сам иронизировать умею...
Лучше бы помог... чем ухмыляться...

-~{}~ 05.04.05 22:29:

agx
Спасибо...
 
Сверху