Задать вопрос

Почему usort работает не так как ожидаю?

Есть многомерный массив с данными вида:
64c772bdc902b604077917.png

Для сортировки использую функцию, сначала сравниваю очки, если == иду смотреть на сумму:
usort($result, function($a, $b) {
            if($a['data']['stats']['point'] == $b['data']['stats']['point']) {
                if($a['data']['stats']['sum'] == $b['data']['stats']['sum']) {
                    return 0;
                }

                return ($a['data']['stats']['sum'] > $b['data']['stats']['sum']) ? -1 : 1;
            }

            return ($a['data']['stats']['point'] > $b['data']['stats']['point']) ? -1 : 1;
        });


Ожидаю, что при равных очках, будет сортировать по сумме, но как видим на скрине - нет. При этом, такой баг только с первыми элементами, дальше работает как нужно.
  • Вопрос задан
  • 113 просмотров
Подписаться 1 Простой 9 комментариев
Решения вопроса 1
Ошибка была в том, что вещественные числа нельзя сравнивать напрямую. ( подробнее - в комментарии к вопросу)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы