>当我尝试从这里应用以下代码时
usort($myArray, function($a, $b) {
return $a['order'] - $b['order'];
});
它按升序给我结果。
输出:
0
0
0
0
0
0.29
1.09
6.33
在交换$a和$b时,它按降序给出结果,除了一个值
usort($myArray, function($a, $b) {
return $b['order'] - $a['order'];
});
输出:
6.33
1.09
0
0
0
0
0.29
0
我想按以下顺序获得结果:
6.33
1.09
0.29
0
0
0
0
0
我如何实现相同的目标。?
我的第一个猜测是 usort 期望整数响应,如果它们不是整数,则会对返回值进行舍入。在 0.29 的情况下,当它与 0 进行比较时,结果是 0.29(或 -0.29),四舍五入为 0。对于 usort,0 表示两个值相等。
请尝试以下操作:
usort($myArray, function($a, $b) {
if($a['order']==$b['order']) return 0;
return $a['order'] < $b['order']?1:-1;
});
(我认为这是正确的方向。要颠倒顺序,请将<
更改为 >
)
在 PHP 7(及以上)中使用宇宙飞船操作员:
usort($myArray, function($a, $b) {
return $a['order'] <=> $b['order'];
});
将返回按升序排序的数组。反转比较将按降序返回它。
usort($myArray, function($a, $b) {
return $b['order'] <=> $a['order'];
});
只需切换$a并按如下方式$b;
function sort($a, $b){
return strcasecmp($b->order, $a->order);
}
usort($myArray, "sort");
您也可以在排序后简单地反转数组。
以与您相同的方式开始:
usort($myArray, function($a, $b) {
return $a['order'] - $b['order'];
});
然后像这样反转结果:
$myArray = array_reverse($myArray);
这很老,但希望这对某人有所帮助。设置降序的最简单方法是乘以负一 (-1),如下所示。对我来说效果很好,有文字。
function DESC($a, $b)
{
return strcmp($a["text"], $b["text"])*-1;
}
usort($results,"DESC");