【发布时间】:2009-02-18 16:05:48
【问题描述】:
我们编写了一些涉及 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 错误的任何参考。
这个问题可能来自哪里?我可以自己编写排序函数来解决这个问题吗?
【问题讨论】:
-
字符串 'Interpolator::sortByDistance' 是否在所有 PHP 版本中都用作回调?我一直使用约定数组('Iterpolator'、'sortByDistance')来进行静态方法回调。
-
@chaos - 谢谢...不知道。