【问题标题】:Sort multi-dimensional array with decimal values [duplicate]用十进制值对多维数组进行排序[重复]
【发布时间】:2018-01-26 04:19:16
【问题描述】:

我有一个这样的数组:

[0] => Array (
  [id] => 17 
  [score] => 9.37272727273
)
[1] => Array (
  [id] => 1 
  [score] => 9.19791666667
) 
[2] => Array (
  [id] => 2
  [score] => 9.23333333333
) 

如何按分数降序排列这个数组?

我试过了:

usort($match_scores, 'sortByScore');

function sortByScore($a, $b) {
    return $b['score'] - $a['score'];
}

虽然它似乎大部分对数组进行排序,但结果并不总是准确的!似乎有些值仍然漏掉了,也许是因为小数?分数是float

【问题讨论】:

  • return $b['score'] > $a['score'] ? 1 : -1;?
  • 非常感谢。这确实有效。

标签: php arrays sorting


【解决方案1】:

试试这个:

$arr = array(
    array('id' => 2, 'score' => 4.6),
    array('id' => 5, 'score' => 1.7),
    array('id' => 6, 'score' => 3.7),
);

usort($arr, 'sort_by_score');

function sort_by_score($a, $b) {
    return $b['score'] > $a['score'] ? 1 : -1;
}

var_dump($arr);

【讨论】:

    猜你喜欢
    • 2013-04-03
    • 1970-01-01
    • 2012-07-18
    • 2015-04-11
    • 1970-01-01
    • 2018-02-01
    • 2012-04-23
    相关资源
    最近更新 更多