2009-02-18 93 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'));