从高到低排序

时间:2018-09-07 00:53:03

标签: php arrays

Array (
  [0] => Array (
    [2] => 9.6
  )
  [1] => Array (
    [497] => 11.666666666667
  )
  [2] => Array (
    [451] => 34
  )
  [3] => Array (
    [459] => 8.8
  )
  [4] => Array (
    [461] => 22.5 
  )
)

我有这个数组。

如何按数字值对它进行排序?

我尝试了

usort($array, function ($a, $b)
{
    return $a[0] < $b[0];
});

但是不起作用。

2 个答案:

答案 0 :(得分:1)

第一件事……from the manual

  

value_compare_func
  如果第一个参数分别小于,等于或大于第二个参数,则比较函数必须返回小于,等于或大于零的整数

强调“整数” 部分。

从PHP 7开始,您可以为此使用spaceship operator

尽管要解决非顺序数组键,您仍需要做一些额外的工作。您可以使用reset()

获得 first
usort($array, function($a, $b) {
    return reset($b) <=> reset($a);
});

演示〜https://3v4l.org/uni3v(在PHP 5.x中不起作用)


可以通过简单的减法来实现PHP 7之前的版本。例如

return reset($b) - reset($a);

答案 1 :(得分:0)

尝试一下:

$numbers = [1, 3, 2];

usort($numbers, function ($a, $b) {
    return $a < $b ? 1 : ($a === $b ? 0 : -1);
});

print_r($numbers);

结果是:

Array
(
    [0] => 3
    [1] => 2
    [2] => 1
)