处理 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 -1
、return 0
和 return 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()
函数移到调用它的函数之外解决了我的问题。
我正在尝试让 PHP 比较两个值并使用 usort()
对它们进行排序。我有这个功能,它可以工作,但是如果 $a == $b
,
停止此功能 运行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 -1
、return 0
和 return 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()
函数移到调用它的函数之外解决了我的问题。