I'm using usort to sort an array with an associative array within each element.
When all of the values I am sorting on in the array are the same then it still changes the position of the elements in the array, is there a way to prevent this?
For example this:
array(
array('name' => 'Ben', 'authn_weight' => 85.3),
array('name' => 'Josh', 'authn_weight' => 85.3),
array('name' => 'Fred', 'authn_weight' => 85.3)
);
May be changed to this:
array(
array('name' => 'Josh', 'authn_weight' => 85.3),
array('name' => 'Ben', 'authn_weight' => 85.3),
array('name' => 'Fred', 'authn_weight' => 85.3)
);
This is the sort function:
private function weightSortImplementation($a, $b){
$aWeight = $a['autn_weight'];
$bWeight = $b['autn_weight'];
if ($aWeight == $bWeight) {
return 0;
}
return ($aWeight < $bWeight) ? 1 : -1;
}
I have checked that the weightSortImplementation
function is always returning 0 showing that they are the same. So why is this still reordering the array?
usort
the order was reversed. codepad.org/PRFpq8Ug – Bumper