// Функция сравнения
function cmp($a, $b) {
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
// Сортируемый массив
$array = array('a' => 4, 'b' => 8, 'c' => -1, 'd' => -9, 'e' => 2, 'f' => 5, 'g' => 3, 'h' => -4);
print_r($array);
// Сортируем и выводим получившийся массив
uasort($array, 'cmp');
print_r($array);
// Функция сравнения
function cmp($a, $b) {
echo 'a: '.$a.' b:'.$b."\n";
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
class Dude {
public function getAge();
public function getWeight();
public function getHeight();
}
$a = array(new Dude(20, 70, 180), new Dude(29, 82, 184), new Dude(22, 75, 175));
usort(function (Dude $dude1, Dude $dude2) {
return $a->getHeight() - $b->getHeight();
}, $a);
Это не должно тебя беспокоить, это зависит от алгоритма сортировки. В простейшем случае эти два элемента будут меняться местами, если левый больше правого, то есть если функция возвращает больше нуля, либо останутся на своих местах в противном случае.А что происходит,если функция вернет 1, 0 или -1 ?
С точки зрения логики можешь такой способ сортировки как-нибудь объяснить?Мне нужно отсортировать этот массив таким образом, чтобы элементы со значениями 153 и 42 были вначале массива, остальные после - них.PHP:$a = array(3, 2, 5, 6, 42, 153, 42, 1, 2, 12, 42, 14, 5, 153);
// Функция сравнения
function cmp($a, $b) {
// голова не работает, но чтот такое!
if( $a == 153 ) return -1;
elseif( $a == 42 && $b != 153 ) return -1;
elseif( $a == 42 && $b == 153 ) return 1;
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
все можно обьяснить!С точки зрения логики можешь такой способ сортировки как-нибудь объяснить?
Глубокая мысль...все можно обьяснить!
все у кого лотерейные билеты 153, получают первое место, у кого 42 2е... ну кто остался без подарка позади
Это потому-что не у тебя 153 билет.Глубокая мысль...
Вопрос был "С точки зрения логики" – а не путем констатирования фактов, что "153 – 1-е место, 42 – 2-е, остальные – патом, да!".
Это просто определения – логики в них я не вижу.