Сортировка массива по значениям двух элементов usort

  • Автор темы Автор темы Эдди
  • Дата начала Дата начала

Эдди

Новичок
По одному элементу понятно:

Код:
function srt($a,$b)
{
  if($a['element1']==$b['element1']) return 0;
  return ($a['element1']<$b['element1'])?-1:1;
}
usort($arr,'srt');

А как одновременно отсортировать и по значению второго элемента element2?
 
У тебя есть $a и $b. и целая функция которая их сравнивает. ты в этой функции сравни их как следует и верни 1 или 0 или -1.
 
У тебя есть $a и $b. и целая функция которая их сравнивает. ты в этой функции сравни их как следует и верни 1 или 0 или -1.
Я, конечно, извиняюсь. Именно это я и делаю со значением первого элемента массива.
А как быть со вторым?
Так, что ли?
Код:
function srt($a,$b)
{
  if($a['element1']==$b['element1']) return 0;
  return ($a['element1']<$b['element1'])?-1:1;
  if($a['element2']==$b['element2']) return 0;
  return ($a['element2']<$b['element2'])?-1:1;
}
usort($arr,'srt');
Не помогает. Ничего не меняется.
 
а когда имеет смысл второй элемент? когда первые равны?
 
if($a['element1']==$b['element1']) return 0;

Вот эта строчка говорит о том, что если element1 равны то тебе все равно как они будут располагаться(возврат 0). может стоит изменить это поведение?
 
К примеру чтобы так сорировалось.
Элемент 1 = 1 Элемент 2 = 0
Элемент 1 = 1 Элемент 2 = 1
Элемент 1 = 1 Элемент 2 = 3
Элемент 1 = 2 Элемент 2 = 0 и т.д.
 
Блн. Понял, что надо это условие изменить. Никогда не делал. Попробую.
 
Adelf Не соображу. Дай хоть подсказку еще раз.
Как сослаться на Элемент 2?
 
PHP:
function srt($a,$b)
{
if($a['element1']==$b['element1'])
{
Вот здесь, когда element1 равны надо сравнить вторые элементы. и вернуть 1 - если $a больше и -1 если $b больше
}
return ($a['element1']<$b['element1'])?-1:1;
}
 
Сверху