【发布时间】:2017-07-08 12:55:20
【问题描述】:
我有几个学生在php数组中打分的分数。
$firstarray:
Array (
[0] => Array (
[6] => Array ( //I want to skip this student from ranking
[ENGLISH] => 45.00
[MATHEMATICS] => 5.00
[SCIENCE] => 40.00
)
)
[1] => Array (
[7] => Array (
[ENGLISH] => 41.00
[MATHEMATICS] => 40.00
[SCIENCE] => 47.00
)
)
)
[2] => Array (
[8] => Array (
[ENGLISH] => 42.00
[MATHEMATICS] => 44.00
[SCIENCE] => 40.00
)
)
[3] => Array (
[9] => Array (
[ENGLISH] => 42.00
[MATHEMATICS] => 25.00
[SCIENCE] => 31.00
)
)
)
在另一个数组中,我有每个学生的总分与排名。:
$secondarray:
Array ( [7] =>
Array (
[score] => 128
[rank] => 1
)
[8] =>
Array (
[score] => 126
[rank] => 2
)
[9] =>
Array (
[score] => 98
[rank] => 3
)
[6] =>
Array (
[score] => 90
[rank] => 4
)
)
在取出学生所有科目的总分后,我使用以下php代码计算并列排名:
$totalmarkscore:
Array (
[0] => Array (
[6] => 90
)
[1] => Array (
[7] => 128
)
[2] => Array (
[8] => 126
)
[3] => Array (
[9] => 98
)
)
$rankchu =array();
foreach($totalmarkscore as $k => $vl){
if(is_array($vl)){
foreach($vl as $hlutna =>$ken){
$rankchu[$hlutna]= $ken;
}
}
}
$secondarray = setRankings($rankchu);
我的问题是:我如何跳过计算每个科目未获得至少 15 分的学生的排名?但我还是想显示学生分数的评分细节,我只是想从排名中跳过它,然后保持排名顺序。在上面的例子中,我想跳过 id=6 的学生,因为他在排名计算中没有得到最低 15 分(他只得 5 分),其他保持不变。 请帮忙。谢谢。
【问题讨论】:
-
你怎么知道他只有5分?请显示代码,确定这一点。
-
还要记住,如果两个学生是同等的,他们的排名相同,你需要跳过下一个。
-
@CasimiretHippolyte,我做到了,我有一个排名函数
setRankings($var)可以确定这一点。请查看我对 $secondarray 的预期输出。 -
您从哪里获得信息?如果是来自数据库,在查询数据库时考虑计算和过滤
-
在这种情况下,我建议您以可以直接使用的格式从数据库中获取数据。
标签: php arrays sorting ranking