对uasort函数的一些澄清

时间:2012-01-31 10:26:58

标签: php function

我需要使用uasort()函数,但我不知道如何在函数中获取参数......给出的例子对我来说并不是那么清楚。 cmp函数如何得到他的论点?有人在意解释?

<?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);
?>

1 个答案:

答案 0 :(得分: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;
}