Domanda

Abbiamo scritto un codice che coinvolge usort che funziona bene sui nostri sistemi di sviluppo (PHP 5.2.8), ma stiamo vivendo un problema sui nostri sistemi live (PHP 5.2.0):

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

chiama il metodo (all'interno della stessa 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;
}        

Sui nostri sistemi live, questo restituisce una matrice completamente arbitrariamente ordinato, l'ordine originale è disturbato, ma ancora non in ordine di distanza.

Non riesco a trovare alcun riferimento a un bug di PHP fisso tra 5.2.0 e 5.2.8 relative a questa problema.

Dove potrebbe il problema essere provenienti da? Posso risolvere questo breve di scrivere un ordinamento me stesso funzionare?

È stato utile?

Soluzione

L'unica cosa che mi viene in mente è che si dovrebbe utilizzare questo:

usort($locations, array('Interpolator', 'sortByDistance'));
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top