2012-09-14 73 views
1

有誰知道函數是如何使用PHP中的usort函數在對象上執行自然順序排序的。如何在php中使用usort執行自然排序

可以說的對象($ obj->評級)在

$obj->10 
$obj->1 
$obj->2 
$obj->20 
$obj->22 

值的範圍是什麼,我試圖讓排序函數返回

$obj->22 
$obj->20 
$obj->10 
$obj->2 
$obj->1 

由於我目前的標準排序功能

function MySort($a, $b) 
{ 
    if ($a->Rate == $b->Rate) 
    { 
     return 0; 
    } 
    return ($a->Rate < $b->Rate) ? -1 : 1; 
} 

正在恢復

$obj->1 
$obj->10 
$obj->2 
$obj->20 
$obj->22 

回答

10

使用strnatcmp爲您的比較功能。例如它就像

function mysort($a, $b) { 
    return strnatcmp($a->rate, $b->rate); 
} 
+0

只是一個小紙條。上面的答案將返回1,2,3等,但問題是4,3,2,1。您需要做的只是調用例如$ b-> rate,$ a-> rate的調用。 – TheAlbear