2011-05-19 43 views
1

我有以下功能:PHP數組比較函數如何工作?

public static function CompareGroupReportEntries($a, $b) 
{ 
    if ($a->visibility == $b->visibility) { 
     return 0; 
    } else{ 
     return $a->visibility < $b->visibility ? 1 : -1;   
    } 
} 

它工作正常,我明白它做什麼。但是我很難理解它是如何工作的。它在下面一行被調用;

usort($reports, "Utilities::CompareGroupReportEntries"); 

它被稱爲循環外,所以它如何設法排序數組中的所有對象? $ a和$ b的參數是什麼?

欣賞幫助。

+1

你應該檢查文檔 - http://uk2.php.net/manual/en/function.usort.php - 解釋是挺清楚的 – meouw 2011-05-19 11:28:46

回答

0

它比較數組的元素來確定它們的位置。

一個如此$和$ b是到列表中的元素,並從CompareGroupReportEntries功能可以說這值越大的結果,因此它可以在這裏將它一個向上或向下

0

函數usort是一個採用數組和回調函數的排序函數。這裏你的功能CompareGroupReportEntries是一個回調函數。 PHP不關心你的數組元素是否是字符串或字符串。它期望您的回調函數用於數組值的排序條件。如果你熟悉C語言,那麼有一個quicksort函數也需要回調函數