Pergunta

Nós escrevemos algum código envolvendo usort que funciona bem em nossos sistemas de desenvolvimento (PHP 5.2.8), mas está enfrentando um problema em nossos sistemas vivos (PHP 5.2.0):

// Sort by distance
usort($locations, 'Interpolator::sortByDistance');

chama o método (dentro da mesma classe 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;
}        

Em nossos sistemas ao vivo, este retorna uma matriz completamente arbitrariamente classificadas, a ordem original é perturbado, mas ainda não classificadas pela distância.

Não consigo encontrar qualquer referência a um bug PHP fixa entre 5.2.0 e 5.2.8 relevante para este problema.

Onde pode este problema ser proveniente de? Posso corrigir isso curto de escrever uma função de classificação eu mesmo?

Foi útil?

Solução

A única coisa que posso pensar é que você deve estar usando este:

usort($locations, array('Interpolator', 'sortByDistance'));
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top