0

我们编写了一些涉及 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 错误的任何引用。

这个问题可能来自哪里?我可以自己写一个排序函数来解决这个问题吗?

4

1 回答 1

3

我能想到的唯一想法是你应该使用这个:

usort($locations, array('Interpolator', 'sortByDistance'));
于 2009-02-18T16:23:59.270 回答