php - 降序排列

标签 php arrays sorting multidimensional-array usort

当我尝试应用以下代码 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/

相关文章:

java - 网络钓鱼扫描程序帮助

创建一个从 C 文本文件返回字符串数组的方法

c - 在一个函数中对 5 个数组进行排序

php - 将变量添加到字符串时出错

php - Facebook - 解析输入 URL 时出错,没有数据被缓存,或者没有数据被抓取

php - 导入CSV数据到MYSQL

javascript - Firestore orderBy Timestamp DESC

php - 移动了服务器,现在出现 fatal error : Call to undefined function mysqli_connect()

c# - 为什么我的C#程序无法识别长度?

javascript - 在 ('change' 上)功能不起作用