0

開発システム(PHP 5.2.8)で正常に機能するUSORTを含むコードをいくつか書きましたが、ライブシステム(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 に答える