当我尝试应用以下代码 from here
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 - 降序排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14534672/