Почему эта функция usort() не работает в некоторых версиях PHP?

StackOverflow https://stackoverflow.com/questions/561734

  •  05-09-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

usort($locations, array('Interpolator', 'sortByDistance'));
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top