我们编写了一些涉及 usort 的代码,这些代码在我们的开发系统 (PHP 5.2.8) 上运行良好,但在我们的实时系统 (PHP 5.2.0) 上遇到了问题:
// Sort by distance
usort($locations, 'Interpolator::sortByDistance');
调用方法(在同一个类 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;
}
在我们的实时系统上,这会返回一个完全任意排序的数组,原来的顺序被打乱了,但仍然没有按距离排序。
我找不到与此问题相关的在 5.2.0 和 5.2.8 之间修复的 PHP 错误的任何引用。
这个问题可能来自哪里?我可以自己写一个排序函数来解决这个问题吗?