2012-01-31 63 views
2

我需要使用uasort()函數,但我不明白如何獲取函數中的參數......給出的例子對我來說不是很清楚。 cmp函數如何得到他的論點?有人關心解釋?對uasort函數的一些說明

<?php 
// Comparison function 
function cmp($a, $b) { 
    if ($a == $b) { 
     return 0; 
    } 
    return ($a < $b) ? -1 : 1; 
} 

// Array to be sorted 
$array = array('a' => 4, 'b' => 8, 'c' => -1, 'd' => -9, 'e' => 2, 'f' => 5, 'g' => 3, 'h' => -4); 
print_r($array); 

// Sort and print the resulting array 
uasort($array, 'cmp'); 
print_r($array); 
?> 

回答

0

其中元素從數組挑不應該在其中您比較功能的工作方式有什麼區別的順序。

uasort將被應用,直到陣列中的每個元素都根據您在cmp函數中應用的比較進行排序。

更新

如果你真的想知道它是如何排序,看PHP源,數組第一施加有zend_hash_sort它使用zend_qsort比較功能,據我所知,只是按價值訂貨。

試着改變你的CMP功能到下面來看看這是怎麼回事:

function cmp($a, $b) { 
    echo "a=$a, b=$b"; // add this to see what's going on 
    if ($a == $b) { 
     return 0; 
    } 
    return ($a < $b) ? -1 : 1; 
} 
+0

感謝您的回答!但是'函數cmp($ a,$ b)'如何得到他的參數('$ a'和'$ b')? – Michiel 2012-01-31 11:55:08

+0

PHP從傳遞給uasort函數的數組中挑選兩個元素進行比較,您不需要特別傳遞任何東西。 – 2012-02-01 10:56:07

+0

但是在這種情況下,數組中有多於2個項目......那麼PHP如何知道要採用哪些元素? – Michiel 2012-02-01 10:58:21