2012-05-16 27 views
2

我已閱讀了PHP手冊中的uksort,但它很難理解。任何人都可以解釋PHP中uksort()的工作原理嗎?

任何人都可以幫我嗎?

下面是一個例子:

<?php 
function my_sort($x, $y) 
{ 
    if ($x == $y) return 0; 
    return ($x > $y) ? -1 : 1; 
} 
$people = array(
    "10" => "javascript", 
    "20" => "php", "60" => "vbscript", 
    "40" => "jsp"); 
uksort($people, "my_sort"); 
print_r($people); 
?> 

這到底是怎麼回事?

+0

uksort只返回true或false,所以-1應該是b 0,你需要輸出什麼,產生什麼錯誤 –

+2

Mian_Khurram_Iljaz,你錯了。該手冊明確指出比較函數應該返回一個正數或負數(以區分哪個鍵應該先出現)。 –

回答

3

正如manual說,你的函數(my_sort在這種情況下)應該返回:

  • 負整數(在這種情況下-1)如果你考慮$a小於$b
  • 積極整數如果你認爲$a大於$b
  • 0如果你認爲它們是相同的。

正如您可能已經猜到的那樣,uksort將使用您的比較函數來查看元素應該在排序後的數組中的順序。它會每次使用兩個鍵多次調用您的功能。您將這些鍵與對方進行比較,然後將結果返回。

這個想法是,你可以編程你自己的比較函數,做一些不平凡的事情,例如,如果你想讓某個鍵永遠是第一個。你的微不足道的例子可以使用常規的krsort

相關問題