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

Эдди

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

Код:
function srt($a,$b)
{
  if($a['element1']==$b['element1']) return 0;
  return ($a['element1']<$b['element1'])?-1:1;
}
usort($arr,'srt');
А как одновременно отсортировать и по значению второго элемента element2?
 

Adelf

Administrator
Команда форума
У тебя есть $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');
Не помогает. Ничего не меняется.
 

Adelf

Administrator
Команда форума
а когда имеет смысл второй элемент? когда первые равны?
 

Adelf

Administrator
Команда форума
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?
 

Adelf

Administrator
Команда форума
PHP:
function srt($a,$b)
{
if($a['element1']==$b['element1'])
{
Вот здесь, когда element1 равны надо сравнить вторые элементы. и вернуть 1 - если $a больше и -1 если $b больше
}
return ($a['element1']<$b['element1'])?-1:1;
}
 
Сверху