2012-01-31 67 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