Por que isso usort () - função falhar em algumas versões do PHP?
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?
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