【发布时间】:2019-09-16 02:37:34
【问题描述】:
下面是我的多维数组: 我已经根据“等级”对数组进行了排序并得到了结果。 这个排序后的数组再次需要根据 'grade' 键对 'timetaken' 进行排序。
例如:有等级= 1.75,这应该按时间键排序。而grade= 2.50 应该更高,因为它高于1.75。
$testing_data = array(
0 => array(
"fullname" => ' Shoping0000000000',
"grade" => 2.5000,
"timetaken" => 15
),
1 => array(
"fullname" => ' Vennapureddy',
"grade" => 1.75000,
"timetaken" => 13
),
2 => array(
"fullname" => ' Shoping1111111',
"grade" => 1.75000,
"timetaken" => 11
),
3 => array(
"fullname" => ' Shoping2222222',
"grade" => 1.75000,
"timetaken" => 90
),
4 => array(
"fullname" => ' Shoping333333333',
"grade" => 1.7000,
"timetaken" => 15
),
5 => array(
"fullname" => ' Azmeera',
"grade" => 1.7000,
"timetaken" => 67
),
6 => array(
"fullname" => 'Admin User',
"grade" => 1.00,
"timetaken" => 180
),
7 => array(
"fullname" => ' Shoping444444444444',
"grade" => 1,
"timetaken" => 15
),
8 => array(
"fullname" => ' Shoping55555555555555555',
"grade" => 0.5000,
"timetaken" => 290
),
9 => array(
"fullname" => ' Shoping6666',
"grade" => 0.5000,
"timetaken" => 120
),
10 => array(
"fullname" => ' Shoping77777',
"grade" => 0.5000,
"timetaken" => 187
),
11 => array(
"fullname" => ' Shoping888888',
"grade" => 0.5000,
"timetaken" => 20
),
);
我的结果数组应该是这样的:
$testing_data = array(
0 => array(
"fullname" => ' Shoping0000000000',
"grade" => 2.5000,
"timetaken" => 15
),
1 => array(
"fullname" => ' Shoping1111111',
"grade" => 1.75000,
"timetaken" => 11
),
2 => array(
"fullname" => ' Vennapureddy',
"grade" => 1.75000,
"timetaken" => 13
),
3 => array(
"fullname" => ' Shoping2222222',
"grade" => 1.75000,
"timetaken" => 90
),
4 => array(
"fullname" => ' Shoping333333333',
"grade" => 1.7000,
"timetaken" => 15
),
5 => array(
"fullname" => ' Azmeera',
"grade" => 1.7000,
"timetaken" => 67
),
6 => array(
"fullname" => ' Shoping444444444444',
"grade" => 1,
"timetaken" => 15
),
7 => array(
"fullname" => 'Admin User',
"grade" => 1.00,
"timetaken" => 180
),
8 => array(
"fullname" => ' Shoping888888',
"grade" => 0.5000,
"timetaken" => 20
),
9 => array(
"fullname" => ' Shoping6666',
"grade" => 0.5000,
"timetaken" => 120
),
10 => array(
"fullname" => ' Shoping77777',
"grade" => 0.5000,
"timetaken" => 187
),
11 => array(
"fullname" => ' Shoping55555555555555555',
"grade" => 0.5000,
"timetaken" => 290
),
);
【问题讨论】:
-
我看不出这两个数组有什么区别
-
不清楚您要做什么。从数据来看,您似乎希望按成绩降序排序,然后按时间升序排序。对吗?
-
您尝试过
array_的众多功能吗? -
重复帖子上的答案显示了一种按多个条件对数组进行排序的简单方法
-
usort比较表达式应该是
$b['grade'] <=> $a['grade'] ?: $a['timetaken'] <=> $b['timetaken']
标签: php sorting multidimensional-array