Estoy usando usort para ordenar una matriz con una matriz asociativa dentro de cada elemento.PHP usort reordena matriz el valor de clasificación es el mismo para todos
Cuando todos los valores que estoy ordenando en la matriz son los mismos, sigue cambiando la posición de los elementos en la matriz, ¿hay alguna manera de evitar esto?
Por ejemplo esto:
array(
array('name' => 'Ben', 'authn_weight' => 85.3),
array('name' => 'Josh', 'authn_weight' => 85.3),
array('name' => 'Fred', 'authn_weight' => 85.3)
);
puede ser cambiado a esto:
array(
array('name' => 'Josh', 'authn_weight' => 85.3),
array('name' => 'Ben', 'authn_weight' => 85.3),
array('name' => 'Fred', 'authn_weight' => 85.3)
);
Esta es la función de clasificación:
private function weightSortImplementation($a, $b){
$aWeight = $a['autn_weight'];
$bWeight = $b['autn_weight'];
if ($aWeight == $bWeight) {
return 0;
}
return ($aWeight < $bWeight) ? 1 : -1;
}
He comprobado que la función weightSortImplementation
es siempre regresando 0 mostrando que son lo mismo. Entonces, ¿por qué sigue reordenando la matriz?
Eso es un problema interesante. Acabo de probar esto y, después de usar 'usort', el orden se invirtió. http://codepad.org/PRFpq8Ug –
No deben estar usando un [stable sort] (http://en.wikipedia.org/wiki/Sorting_algorithm#Stability), que no garantiza el orden de los elementos si son igual. – JoeyJ