PHP。用户定义的比较函数是如何工作的?

PHP。用户定义的比较函数是如何工作的?,php,compare,Php,Compare,例如: <?php function cmp($a, $b) { if ($a == $b) { return 0; } return ($a < $b) ? -1 : 1; } $a = array(3, 2, 5, 6, 1); usort($a, "cmp"); foreach ($a as $key => $value) { echo "$key: $value\n"; } ?> 在用户定义的比较函数“cmd

例如:

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

$a = array(3, 2, 5, 6, 1);

usort($a, "cmp");

foreach ($a as $key => $value) {
    echo "$key: $value\n";
}
?>
在用户定义的比较函数“
cmd
”中,它有两个参数,
$a
$b


第一个和第二个参数代表什么?它们是
array[x]
还是
array[x+1]

它们只是被排序数组中的两个元素,不一定是相邻元素
usort
执行某种排序算法(请参阅),其中包括比较不同的元素对以确定它们的顺序。它使用回调函数来确定这一点。

它们只是被排序数组中的两个元素,不一定是相邻元素
usort
执行某种排序算法(请参阅),其中包括比较不同的元素对以确定它们的顺序。它使用您的回调函数来确定这一点。

作为一般说明:PHP使用快速排序算法。不明白。“它们只是正在排序的数组中的两个元素”。比如说,在这种情况下,$a是哪种元素,$b是哪种元素?@MarkBaker:我以为是,但无法证明。这是在任何地方记录的,还是从源头上收集的?@gilzero:一般来说,它可以是任何一对。看一看,例如,工作是如何进行的;它们都涉及对任意元素对执行比较。@MarkBaker@Oli PHP有一个通用的哈希表排序函数
zend_hash_sort
(),但实际上它总是提供一个
zend_qsort
()排序函数(例如)。所以,是的,PHP使用快速排序:)作为一般说明:PHP使用快速排序算法。“它们只是正在排序的数组中的两个元素”。比如说,在这种情况下,$a是哪种元素,$b是哪种元素?@MarkBaker:我以为是,但无法证明。这是在任何地方记录的,还是从源头上收集的?@gilzero:一般来说,它可以是任何一对。看一看,例如,工作是如何进行的;它们都涉及对任意元素对执行比较。@MarkBaker@Oli PHP有一个通用的哈希表排序函数
zend_hash_sort
(),但实际上它总是提供一个
zend_qsort
()排序函数(例如)。是的,PHP使用快速排序:)
0: 1
1: 2
2: 3
3: 5
4: 6