Pourquoi cette usort () - fonction échouer sur certaines versions de PHP?
Question
Nous avons écrit un code impliquant usort qui fonctionne très bien sur nos systèmes de développement (PHP 5.2.8), mais éprouvent un problème sur nos systèmes en direct (PHP 5.2.0):
// Sort by distance
usort($locations, 'Interpolator::sortByDistance');
appelle la méthode (dans la même classe Interpolateur):
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;
}
Sur nos systèmes en direct, ce retourne un tableau trié complètement arbitraire, l'ordre d'origine est perturbée, mais pas encore classifiées selon la distance.
Je ne peux trouver aucune référence à un bug PHP fixe entre 5.2.0 et 5.2.8 correspondant à ce problème.
Si ce problème vient peut-être? Puis-je résoudre ce problème à court d'écrire moi-même fonction de tri?
La solution
La seule chose que je peux penser est que vous devriez utiliser ceci:
usort($locations, array('Interpolator', 'sortByDistance'));
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow