Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中的多维数组排序_Php_Sorting_Multidimensional Array - Fatal编程技术网

php中的多维数组排序

php中的多维数组排序,php,sorting,multidimensional-array,Php,Sorting,Multidimensional Array,可能重复: 我在php中有3列多维数组。我需要按“奖励单位”对其进行排序,如果两个用户拥有相同的奖励单位(tiebreaker),那么选择单位最少的一个将首先出现 user_id awarded_units selected_units 15 5 2 22 5 1 3 4 2 4 4 5 5 4

可能重复:

我在php中有3列多维数组。我需要按“奖励单位”对其进行排序,如果两个用户拥有相同的奖励单位(tiebreaker),那么选择单位最少的一个将首先出现

user_id awarded_units selected_units

15       5               2
22       5               1
3        4               2
4        4               5
5        4               1
正如您所看到的,我已经使用一些多维排序函数根据已授予的_单位对数组进行了排序。现在,我需要解决断局条件。由于user_id=15和user_id=22拥有相同的奖励单位,因此user_id 22必须排在第一位

user_id awarded_units selected_units

15       5               2
22       5               1
3        4               2
4        4               5
5        4               1
正确的顺序将是

user_id awarded_units selected_units

22       5               1
15       5               2
5        4               1
3        4               2
4        4               5
请告诉我怎么做。谢谢你可以使用:

使用:


您也可以使用usort,但我更喜欢使用usort—更灵活,可读性更好。

在这里发布之前,您看过数组排序吗?PS:您是自己创建数组还是从数据库接收数组?特别是PHP手册中的条目——如果您需要在PHP中解决这个问题的话。你还没有发布你的数组,所以这可能有点不同。我已经尝试了usort,但是没有成功。@PriteshGupta:这个有多个副本。邀请您搜索。你甚至可以尝试和错误这么多重复的。这甚至可以通过不理解任何一行PHP来实现。提示:在数据库中排序,速度更快,而且根本不需要任何PHP代码。但另一方面,
usort
很复杂,因为需要编写代码进行比较。经常会出现错误-您的答案也是一个很好的例子。第一个代码示例更好。现在你改了。我以为我看错了问题,又改回来了。
usort($data, function($a, $b) {
    if ($a['awarded_units'] == $b['awarded_units'])
    {
        return $b['selected_units'] - $a['selected_units'];
    }

    return $b['awarded_units'] - $a['awarded_units'];
});