我正在使用usort对一个数组进行排序,其中每个元素都包含一个关联数组。
当我要排序的所有值在数组中都相同时,它仍然会改变数组中元素的位置,有没有办法防止这种情况发生?
例如:
可能更改为这样:
这是排序函数:
我已经检查了
当我要排序的所有值在数组中都相同时,它仍然会改变数组中元素的位置,有没有办法防止这种情况发生?
例如:
array(
array('name' => 'Ben', 'authn_weight' => 85.3),
array('name' => 'Josh', 'authn_weight' => 85.3),
array('name' => 'Fred', 'authn_weight' => 85.3)
);
可能更改为这样:
array(
array('name' => 'Josh', 'authn_weight' => 85.3),
array('name' => 'Ben', 'authn_weight' => 85.3),
array('name' => 'Fred', 'authn_weight' => 85.3)
);
这是排序函数:
private function weightSortImplementation($a, $b){
$aWeight = $a['autn_weight'];
$bWeight = $b['autn_weight'];
if ($aWeight == $bWeight) {
return 0;
}
return ($aWeight < $bWeight) ? 1 : -1;
}
我已经检查了
weightSortImplementation
函数,发现它总是返回0,表示它们是相同的。那么为什么还会重新排序数组呢?
usort
之后,顺序被颠倒了。http://codepad.org/PRFpq8Ug - gen_Eric