处理 usort PHP 中的相等数字

Dealing with equal numbers in usort PHP

我正在尝试让 PHP 比较两个值并使用 usort() 对它们进行排序。我有这个功能,它可以工作,但是如果 $a == $b

,这个功能就会停止 运行ning

停止此功能 运行ning 可防止 PHP 文件中的其他功能变为 运行。

<?php
function cmp($a, $b) {
    if ($a[4] == $b[4]) {
        return 0;
    }
    return ($a[4] < $b[4]) ? -1 : 1;
}
usort($participants_times,"cmp");
?>

当有两个值相等时,我不介意哪个在另一个前面。我曾尝试在 $a == $b 时设置 return -1return 0return 1,但它们对我不起作用。

感谢任何帮助:)

您应该用嵌套的 if-else 语句替换三元运算符。在您的情况下,returns 1 用于 >== 比较。

if ($a[4] < $b[4])
    return -1;
else if ($a[4] > $b[4]) 
    return 1;
else
    return 0;

因为你不关心大小写相等,所以忽略它

function cmp($a, $b) {
    return ($a[4] < $b[4]) ? -1 : 1;
}

usort($participants_times,"cmp");

所以所提供的答案很可能对我的问题是正确的 - 然而,在我的情况下,问题与我的 function() 的形式有关,我在函数中有一个函数,第二个初始函数的迭代失败。

将我的 cmp() 函数移到调用它的函数之外解决了我的问题。