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];
});
但是不起作用。
答案 0 :(得分:1)
第一件事……from the manual
value_compare_func
如果第一个参数分别小于,等于或大于第二个参数,则比较函数必须返回小于,等于或大于零的整数。
强调“整数” 部分。
从PHP 7开始,您可以为此使用spaceship operator。
尽管要解决非顺序数组键,您仍需要做一些额外的工作。您可以使用reset()
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
)