usort-PHP中的等数处理
我试图让PHP比较两个值,并使用usort-PHP中的等数处理,php,return,usort,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"); ?&
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");
?>
当两个值相等时,我不介意哪一个在另一个之前。当$a==$b
时,我尝试设置返回-1
、返回0
和返回1
,但它们对我不起作用
非常感谢您的帮助:)您应该用嵌套的if-else语句替换三元运算符。在您的条件下,对于
和=
比较,它都返回1
if ($a[4] < $b[4])
return -1;
else if ($a[4] > $b[4])
return 1;
else
return 0;
if($a[4]<$b[4])
返回-1;
否则如果($a[4]>$b[4])
返回1;
其他的
返回0;
因为你不在乎平等的情况,所以忽略它
function cmp($a, $b) {
return ($a[4] < $b[4]) ? -1 : 1;
}
usort($participants_times,"cmp");
函数cmp($a,$b){
回报($a[4]<$b[4])?-1:1;
}
usort($参与者乘以“cmp”);
因此,提供的答案很可能对我的问题是正确的-但是,在我的例子中,问题与我的函数()的形式有关,我在函数中有一个函数,而初始函数的第二次迭代失败
将我的cmp()
函数移到调用它的函数之外解决了我的问题。停止运行是什么意思?有什么错误吗?我有一些php在这个函数之后运行,当有相等的值时,它根本无法运行。我有var_dump()
'd,我知道这个函数是个问题,但我不知道如何从这个函数中获取检索错误。你能添加$a和$b的var_dump吗?很抱歉在旧线程中问了一个愚蠢的问题,但是你说它会返回1进行>和==比较。怎样?它没有为==比较返回1,而是返回0。如果==比较通过,则不会转到下一行比较