代码之家  ›  专栏  ›  技术社区  ›  Christian Studer delphist

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

  •  0
  • Christian Studer delphist  · 技术社区  · 15 年前

    我们编写了一些涉及usort的代码,这些代码在我们的开发系统(php 5.2.8)上运行良好,但在我们的实时系统(php 5.2.0)上遇到了问题:

    // 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 bug的任何引用。

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

    1 回复  |  直到 15 年前
        1
  •  3
  •   Greg    15 年前

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

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