在PHP中处理相同的数字

时间:2017-01-25 04:23:28

标签: php return usort

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

,这个功能就会停止运行

让此函数停止运行会阻止PHP文件中的其他功能运行。

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

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

感谢任何帮助:)

3 个答案:

答案 0 :(得分:1)

您应该使用嵌套的if-else语句替换三元运算符。在您的情况下,它会为>==比较返回1。

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

答案 1 :(得分:0)

因为你不关心平等的情况,只要忽略它

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

usort($participants_times,"cmp");

答案 2 :(得分:0)

所以提供的答案很可能对我的问题是正确的 - 但是,就我而言,问题与我function()的形式有关,我在函数内部有一个函数,初始函数的第二次迭代失败。

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