【问题标题】:Sort array with the highest points对具有最高点的数组进行排序
【发布时间】:2011-08-02 15:09:10
【问题描述】:

如何对点数最高的数组进行排序?

例子:

$sale = array();

Array
(
   [UserA] => Array
        (
            [unsuccessful] => 0
            [Points] => 31
            [procesing] => 4
        )
   [UserB] => Array
        (
            [unsuccessful] => 4
            [Points] => 200
            [procesing] => 1
        )
   [UserC] => Array
        (
            [unsuccessful] => 3
            [Points] => 150
            [procesing] => 55
        )
)

按点排序,应依次为:UserB、UserC、UserA

【问题讨论】:

    标签: php arrays sorting


    【解决方案1】:
    uasort($array, function($a, $b) {
        return $b['Points'] - $a['Points'];
    });
    

    uasort()usort() 函数接受一个回调,该回调应该准确指定是什么使一个项目大于或低于另一个项目。如果此函数返回0,则项目相等。如果它返回一个正数,则第二项大于第一项。否则,第一项大于第二项。

    uasort()usort() 的区别在于uasort() 也保留了密钥,而usort() 则没有。还可以查看the comparison of array sorting functions,了解可以对数组进行排序的所有其他方式。

    【讨论】:

    • 您可以使用return $a['Points'] - $b['Points']简化实际比较。
    • @Stefan Gehrig,好主意,谢谢。不过是$b - $a,因为结果应该按降序排序。
    【解决方案2】:

    您可以使用 php 函数usort 来提供您自己的自定义排序逻辑。见http://www.php.net/manual/en/function.usort.php

    【讨论】:

      【解决方案3】:

      您可能会发现 USort 很有帮助:

      http://php.net/manual/en/function.usort.php

      还有这篇关于 SO 的其他文章。

      Sort multi-dimensional array with usort

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-02
        相关资源
        最近更新 更多