为什么这个usort() - 函数在某些版本的PHP上失败了?

时间:2009-02-18 16:05:49

标签: php arrays usort

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

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

1 个答案:

答案 0 :(得分:3)

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

usort($locations, array('Interpolator', 'sortByDistance'));