2009-02-18 55 views
0

我们写一些代码,涉及usort这对我们的发展系统(PHP 5.2.8)工作正常,但遇到我们的直播系统有问题(PHP 5.2.0):为什么这个usort()函数在某些版本的PHP上失败?

// Sort by distance 
usort($locations, 'Interpolator::sortByDistance'); 

调用该方法(内同一类内插器):

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错误引用。

这个问题从哪里来?我能解决这个简单的自己写分类功能吗?

+0

是否字符串“插补:: sortByDistance”在所有PHP版本回调的工作?对于静态方法回调,我总是使用约定数组('Iterpolator','sortByDistance')。 – nickohrn 2009-02-18 16:15:37

+0

这是一个PHP 5.2.3+的功能。 – chaos 2009-02-18 16:17:10

回答

3

唯一想我能想到的是,你应该使用这样的:

usort($locations, array('Interpolator', 'sortByDistance')); 
相关问题