@Vladimir-Hetman

Логика сортировки uasort?

Я уже понял, что здесь мы управляем функцией сравнения,
которая возвращает три значения 0,1-1 в функцию uasort,
алгоритм(сравнения) который лежит в исходниках PHP.
По этим трём значениям, функция uasort решает куда и что двигать.

Прошерстил кучу сайтов, на одних говорят что:
0 - два значения равны
1 - первое значение больше второго
-1 - первое значение меньше второго

А на других говорят:
0 - оставляет на месте
1 - двигает вправо
-1 - двигает влево

На третьих говорят:
0 - оставляет на месте
1 - двигает элемент вниз
-1 - двигает элемент вверх

После всей этой информации, я еще больше запутался, возникло еще больше вопросов.
Какая информация из вышеперечисленной является достоверной?

Функция uasort двигает туда-сюда первый($a) или второй($b) сравниваемый
элемент массива? Или функция будет двигать сразу два($a и $b) этих элемента?

$arr = [ "б", "в", 1, 3, "а", 2];
 
uasort($arr, function($a, $b){
if(gettype($a) !== gettype($b)){

if(is_string($a)){
return -1;     // если $a строка, то передвинуть $a влево/вверх массива? Что-то я запутался =(
}              // или передвинуть влево/вверх сразу два($a и$b) сравниваемых значения?

else{
return 1;
}}

return $a <=> $b;  // а здесь функция uasort будет двигать два значения($a и $b) туда-сюда или только одно из двух значений?
});
echo implode('', $arr);
  • Вопрос задан
  • 91 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
23 апр. 2024, в 15:45
10000 руб./за проект
23 апр. 2024, в 15:42
5000 руб./за проект
23 апр. 2024, в 15:34
10000 руб./за проект