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'];
});