Почему эта функция usort () не работает в некоторых версиях PHP? - PullRequest
0 голосов
/ 18 февраля 2009

Мы написали некоторый код с использованием 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, относящуюся к этой проблеме.

Откуда может возникнуть эта проблема? Можно ли исправить это, если не написать саму функцию сортировки?

1 Ответ

3 голосов
/ 18 февраля 2009

Единственное, о чем я могу думать, это то, что вы должны использовать это:

usort($locations, array('Interpolator', 'sortByDistance'));
...