按最高键=>值对数组进行排序

时间:2013-08-14 19:21:26

标签: php arrays

我想按amount的值将数组从最高到最低排序。我的数组$res如下:

Array
(
    [0] => 1
    [id] => 1
    [1] => Testowy 1
    [user] => Testowy 1
    [2] => 150
    [amount] => 150
    [3] => 1,2,3
    [what] => 1,2,3
    [4] => Polska
    [country] => Polska
    [5] => 1
    [platform] => 1
)
Array
(
    [0] => 2
    [id] => 2
    [1] => Testowy 2
    [user] => Testowy 2
    [2] => 100
    [amount] => 100
    [3] => 1
    [what] => 1
    [4] => United States
    [country] => United States
    [5] => 2
    [platform] => 2
)

我尝试使用maxarsort,但这些似乎都没有接受他们应该用于排序的密钥。有什么帮助吗?

3 个答案:

答案 0 :(得分:1)

尝试使用

function cmp($a, $b)
{
    return ($a["amount"]<=$b["amount"])?-1:1;
}

usort($array, "cmp");

答案 1 :(得分:1)

usort($res, function ($a, $b){
    return $b['amount'] - $a['amount'];
});
print_r($res);

对于PHP的版本&lt; 5.3,使用以下内容:

function cmp($a, $b){
    return $b['amount'] - $a['amount'];
}
usort($res, "cmp");

答案 2 :(得分:0)

将排序函数与用户定义的比较器一起使用,例如:usort:

http://php.net/usort

然后你的比较器获得两个对象并告诉你(通过你想要的任何逻辑)哪一个更大):

function compare($a, $b) {
    $result = -1;
    if( $a["amount"] == $b["amount"]) {
      $result = 0;
    } else {
       if( $a["amount"] > $b["amount"] ) {
          $result = 1;
       }
    }

    return $result;
}

usort($res, "compare");