Мы написали некоторый код с использованием usort, который отлично работает в наших системах разработки (PHP 5.2.8), но у нас возникла проблема в наших живых системах (PHP 5.2.0):
// Sort by distance
usort($locations, 'Interpolator::sortByDistance');
вызывает метод (в пределах одного класса Interpolator):
private static function sortByDistance($a, $b) {
$return = 0;
if($a['distance'] > $b['distance']) {
$return = 1;
} else if ($a['distance'] < $b['distance']) {
$return = -1;
}
return $return;
}
В наших реальных системах это возвращает совершенно произвольно отсортированный массив, исходный порядок нарушается, но все равно не сортируется по расстоянию.
Я не могу найти ссылку на ошибку PHP, исправленную между 5.2.0 и 5.2.8, относящуюся к этой проблеме.
Откуда может возникнуть эта проблема? Можно ли исправить это, если не написать саму функцию сортировки?