Я уже понял, что здесь мы управляем функцией сравнения,
которая возвращает три значения 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);