Порядок, в котором элементы выбираются из массива, не должен иметь никакого значения для работы вашей функции сравнения.
uasort
будет применяться до тех пор, пока каждый элемент в вашем массиве не будет отсортирован на основепосле сравнения вы применяете его в своей функции cmp
.
Обновлено
Если вы действительно хотите узнать, как это отсортировано, посмотрите на источник PHP,Сначала к массиву применяется zend_hash_sort
, который использует функцию сравнения zend_qsort
, которая, насколько я знаю, просто упорядочивает по значению.
Попробуйте изменить функцию cmp на следующую, чтобы увидеть, что происходит:
function cmp($a, $b) {
echo "a=$a, b=$b"; // add this to see what's going on
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}