Pregunta

Hemos escrito algo de código que implica usort que funciona muy bien en nuestros sistemas de desarrollo (PHP 5.2.8), pero no resolvió el problema en nuestros sistemas vivos (PHP 5.2.0):

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

llama al método (dentro de la misma clase interpolador):

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;
}        

En nuestros sistemas vivos, esto devuelve una matriz completamente arbitraria ordenados, el orden original se altera, pero todavía no ordenadas según la distancia.

No puedo encontrar ninguna referencia a un error de PHP fija entre 5.2.0 y 5.2.8 correspondiente a este problema.

Cuando este problema podría venir de? Puedo solucionar este corto de escribir una función de clasificación a mí mismo?

¿Fue útil?

Solución

Lo único que puedo pensar es que usted debe utilizar esto:

usort($locations, array('Interpolator', 'sortByDistance'));
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top