Nous avons écrit un code impliquant usort qui fonctionne très bien sur nos systèmes de développement (PHP 5.2.8), mais connaissent un problème sur nos systèmes en direct (PHP 5.2.0):Pourquoi cette fonction usort() échoue-t-elle sur certaines versions de PHP?
// Sort by distance
usort($locations, 'Interpolator::sortByDistance');
appelle la méthode (au sein 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, retourne un tableau trié complètement arbitraire, l'ordre d'origine est perturbée, mais pas encore classifiées selon la distance.
Je ne trouve aucune référence à un bogue PHP corrigé entre 5.2.0 et 5.2.8 concernant ce problème.
D'où ce problème pourrait-il provenir? Puis-je corriger ce manque d'écriture d'une fonction de tri moi-même?
Est-ce que la chaîne « interpolateur :: sortByDistance » travail comme un rappel dans toutes les versions de PHP? J'ai toujours utilisé le tableau de convention ('Iterpolator', 'sortByDistance') pour les rappels de méthodes statiques. – nickohrn
C'est une fonctionnalité PHP 5.2.3+. – chaos
@chaos - Merci ... je ne le savais pas. – nickohrn