Сортировка объектов по значению 1, 0 -1 в отношении другого объекта - PullRequest
0 голосов
/ 21 марта 2012

У меня есть функция в моем роде, которая сравнивает строку 1 и строку 2, затем проверяет условие (что я должен написать) - «Код сравнения должен возвращать целое число меньше, равно или больше нуля, еслисоответственно, первая строка должна появиться раньше, остаться там, где ее сравнивали, или появиться после второй строки. "

У меня есть две переменные, цвет 1 и цвет 2. Я хочу отсортировать такие вещи, как:

Первый цвет 1, чем цвет 2, чем все остальное.

Какое условие я должен написать, чтобы сделать это?Я пробовал что-то подобное, но не работает.$ row1 - первый элемент $ row2 - второй элемент

if(COLOR 1 == $row1->name)
   return -1;
if(COLOR 2 == $row1->name &&  $row2->name != COLOR 2)
     return 0;
else if(COLOR 2 == $row2->name && $row2->name == COLOR 1)
   return -1;
else return 1;

Есть идеи?

1 Ответ

1 голос
/ 21 марта 2012

Как вы хотите решить, является ли цвет больше или меньше другого цвета?
При использовании функций обратного вызова для сортировки (как того требует функция usort () в PHP), функция должна возвращать 0, если $ color1 и $ color2 равны, -1, если $ color1 меньше, чем $ color2, и 1, если $ color1 больше, чем $ цвет2

function cmp ( $color1, $color2 ){
  if($color1 < $color2){  /* or some other test for inequality */
    return -1;
  }else if($color1 > $color2){  /* again, it is up to you to define the "values" of colors */
    return 1;
  }else{  /* the colors are equal */
    return 0;
  }
}
...