0

我想按 的值对数组从高到低进行排序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
)

我尝试使用maxand arsort,但似乎没有一个接受他们应该使用哪个键进行排序。有什么帮助吗?

4

3 回答 3

1

尝试使用排序

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

usort($array, "cmp");
于 2013-08-14T19:24:40.923 回答
1
usort($res, function ($a, $b){
    return $b['amount'] - $a['amount'];
});
print_r($res);

对于 PHP < 5.3 的版本,请使用以下内容:

function cmp($a, $b){
    return $b['amount'] - $a['amount'];
}
usort($res, "cmp");
于 2013-08-14T19:36:30.377 回答
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");
于 2013-08-14T19:24:03.837 回答