PHP数据排序问题?

我正在做一个学生成绩排名的功能,导入原生成绩数据(语文、数学、英语、物理、化学、生物、历史、地理、政治)然后计算出每位同学的各科班级排名和各科年级排名情况,后期支持导出数据(原生成绩+成绩单科班级排名+成绩单科年级排名)。

举例

考号 年级 班级 语文 语文班名次 语文级名次
1 1 1 70
2 1 2 80
3 1 2 90
4 1 1 70
5 1 2 80
6 1 3 81
7 1 1 70
8 1 2 80
9 1 3 90
10 1 1 70
11 1 2 80
12 1 2 90
13 1 1 70
14 1 3 81
15 1 2 90
  1. 排名是在导入数据时php处理,还是导入原始数据后再用mysql处理,给一个示例一下,谢谢

  2. 相同分数名次相同如何处理

补充一个php做的分数排序,如何和排名序号结合起来?同分一样如何处理呢?(为了自己认识全是中文键名)
yuwenji:语文分数年级排序
yuwenban[1]:1班语文分数排序
依次类推

Array
(
    [yuwenji] => Array
        (
            [111111000000000009] => 60
            [111111000000000008] => 60
            [111111000000000011] => 60
            [111111000000000012] => 60
            [111111000000000013] => 60
            [111111000000000007] => 60
            [111111000000000006] => 60
            [111111000000000002] => 60
            [111111000000000001] => 60
            [111111000000000003] => 60
            [111111000000000004] => 60
            [111111000000000005] => 60
            [111111000000000010] => 60
        )

    [yuwenban] => Array
        (
            [2] => Array
                (
                    [111111000000000009] => 60
                    [111111000000000011] => 60
                    [111111000000000004] => 60
                    [111111000000000003] => 60
                    [111111000000000002] => 60
                    [111111000000000010] => 60
                )

            [1] => Array
                (
                    [111111000000000008] => 60
                    [111111000000000007] => 60
                    [111111000000000006] => 60
                    [111111000000000005] => 60
                    [111111000000000001] => 60
                )

            [3] => Array
                (
                    [111111000000000013] => 60
                    [111111000000000012] => 60
                )

        )

    [shuxueji] => Array
        (
            [111111000000000009] => 65
            [111111000000000008] => 65
            [111111000000000011] => 65
            [111111000000000012] => 65
            [111111000000000013] => 65
            [111111000000000007] => 65
            [111111000000000006] => 65
            [111111000000000002] => 65
            [111111000000000001] => 65
            [111111000000000003] => 65
            [111111000000000004] => 65
            [111111000000000005] => 65
            [111111000000000010] => 65
        )

    [shuxueban] => Array
        (
            [2] => Array
                (
                    [111111000000000009] => 65
                    [111111000000000011] => 65
                    [111111000000000004] => 65
                    [111111000000000003] => 65
                    [111111000000000002] => 65
                    [111111000000000010] => 65
                )

            [1] => Array
                (
                    [111111000000000008] => 65
                    [111111000000000007] => 65
                    [111111000000000006] => 65
                    [111111000000000005] => 65
                    [111111000000000001] => 65
                )

            [3] => Array
                (
                    [111111000000000013] => 65
                    [111111000000000012] => 65
                )

        )

    [englishji] => Array
        (
            [111111000000000009] => 99
            [111111000000000008] => 99
            [111111000000000011] => 99
            [111111000000000012] => 99
            [111111000000000013] => 99
            [111111000000000007] => 99
            [111111000000000006] => 99
            [111111000000000002] => 99
            [111111000000000001] => 99
            [111111000000000003] => 99
            [111111000000000004] => 99
            [111111000000000005] => 99
            [111111000000000010] => 99
        )

    [englishban] => Array
        (
            [2] => Array
                (
                    [111111000000000009] => 99
                    [111111000000000011] => 99
                    [111111000000000004] => 99
                    [111111000000000003] => 99
                    [111111000000000002] => 99
                    [111111000000000010] => 99
                )

            [1] => Array
                (
                    [111111000000000008] => 99
                    [111111000000000007] => 99
                    [111111000000000006] => 99
                    [111111000000000005] => 99
                    [111111000000000001] => 99
                )

            [3] => Array
                (
                    [111111000000000013] => 99
                    [111111000000000012] => 99
                )

        )

    [wuliji] => Array
        (
            [111111000000000009] => 99
            [111111000000000008] => 99
            [111111000000000011] => 99
            [111111000000000012] => 99
            [111111000000000013] => 99
            [111111000000000007] => 99
            [111111000000000006] => 99
            [111111000000000002] => 99
            [111111000000000001] => 99
            [111111000000000003] => 99
            [111111000000000004] => 99
            [111111000000000005] => 99
            [111111000000000010] => 99
        )

    [wuliban] => Array
        (
            [2] => Array
                (
                    [111111000000000009] => 99
                    [111111000000000011] => 99
                    [111111000000000004] => 99
                    [111111000000000003] => 99
                    [111111000000000002] => 99
                    [111111000000000010] => 99
                )

            [1] => Array
                (
                    [111111000000000008] => 99
                    [111111000000000007] => 99
                    [111111000000000006] => 99
                    [111111000000000005] => 99
                    [111111000000000001] => 99
                )

            [3] => Array
                (
                    [111111000000000013] => 99
                    [111111000000000012] => 99
                )

        )

    [huaxueji] => Array
        (
            [111111000000000009] => 99
            [111111000000000008] => 99
            [111111000000000011] => 99
            [111111000000000012] => 99
            [111111000000000013] => 99
            [111111000000000007] => 99
            [111111000000000006] => 99
            [111111000000000002] => 99
            [111111000000000001] => 99
            [111111000000000003] => 99
            [111111000000000004] => 99
            [111111000000000005] => 99
            [111111000000000010] => 99
        )

    [huaxueban] => Array
        (
            [2] => Array
                (
                    [111111000000000009] => 99
                    [111111000000000011] => 99
                    [111111000000000004] => 99
                    [111111000000000003] => 99
                    [111111000000000002] => 99
                    [111111000000000010] => 99
                )

            [1] => Array
                (
                    [111111000000000008] => 99
                    [111111000000000007] => 99
                    [111111000000000006] => 99
                    [111111000000000005] => 99
                    [111111000000000001] => 99
                )

            [3] => Array
                (
                    [111111000000000013] => 99
                    [111111000000000012] => 99
                )

        )

    [shengwuji] => Array
        (
            [111111000000000009] => 99
            [111111000000000008] => 99
            [111111000000000011] => 99
            [111111000000000012] => 99
            [111111000000000013] => 99
            [111111000000000007] => 99
            [111111000000000006] => 99
            [111111000000000002] => 99
            [111111000000000001] => 99
            [111111000000000003] => 99
            [111111000000000004] => 99
            [111111000000000005] => 99
            [111111000000000010] => 99
        )

    [shengwuban] => Array
        (
            [2] => Array
                (
                    [111111000000000009] => 99
                    [111111000000000011] => 99
                    [111111000000000004] => 99
                    [111111000000000003] => 99
                    [111111000000000002] => 99
                    [111111000000000010] => 99
                )

            [1] => Array
                (
                    [111111000000000008] => 99
                    [111111000000000007] => 99
                    [111111000000000006] => 99
                    [111111000000000005] => 99
                    [111111000000000001] => 99
                )

            [3] => Array
                (
                    [111111000000000013] => 99
                    [111111000000000012] => 99
                )

        )

    [lishiji] => Array
        (
            [111111000000000013] => 81
            [111111000000000012] => 80
            [111111000000000011] => 79
            [111111000000000009] => 78
            [111111000000000008] => 77
            [111111000000000007] => 76
            [111111000000000006] => 75
            [111111000000000005] => 74
            [111111000000000004] => 73
            [111111000000000003] => 72
            [111111000000000002] => 71
            [111111000000000001] => 70
            [111111000000000010] => 69
        )

    [lishiban] => Array
        (
            [2] => Array
                (
                    [111111000000000011] => 79
                    [111111000000000009] => 78
                    [111111000000000004] => 73
                    [111111000000000003] => 72
                    [111111000000000002] => 71
                    [111111000000000010] => 69
                )

            [1] => Array
                (
                    [111111000000000008] => 77
                    [111111000000000007] => 76
                    [111111000000000006] => 75
                    [111111000000000005] => 74
                    [111111000000000001] => 70
                )

            [3] => Array
                (
                    [111111000000000013] => 81
                    [111111000000000012] => 80
                )

        )

    [diliji] => Array
        (
            [111111000000000013] => 81
            [111111000000000012] => 80
            [111111000000000011] => 79
            [111111000000000009] => 78
            [111111000000000008] => 77
            [111111000000000007] => 76
            [111111000000000006] => 75
            [111111000000000005] => 74
            [111111000000000004] => 73
            [111111000000000003] => 72
            [111111000000000002] => 71
            [111111000000000001] => 70
            [111111000000000010] => 69
        )

    [diliban] => Array
        (
            [2] => Array
                (
                    [111111000000000011] => 79
                    [111111000000000009] => 78
                    [111111000000000004] => 73
                    [111111000000000003] => 72
                    [111111000000000002] => 71
                    [111111000000000010] => 69
                )

            [1] => Array
                (
                    [111111000000000008] => 77
                    [111111000000000007] => 76
                    [111111000000000006] => 75
                    [111111000000000005] => 74
                    [111111000000000001] => 70
                )

            [3] => Array
                (
                    [111111000000000013] => 81
                    [111111000000000012] => 80
                )

        )

    [zhengzhiji] => Array
        (
            [111111000000000013] => 81
            [111111000000000012] => 80
            [111111000000000011] => 79
            [111111000000000009] => 78
            [111111000000000008] => 77
            [111111000000000007] => 76
            [111111000000000006] => 75
            [111111000000000005] => 74
            [111111000000000004] => 73
            [111111000000000003] => 72
            [111111000000000002] => 71
            [111111000000000001] => 70
            [111111000000000010] => 69
        )

    [zhengzhiban] => Array
        (
            [2] => Array
                (
                    [111111000000000011] => 79
                    [111111000000000009] => 78
                    [111111000000000004] => 73
                    [111111000000000003] => 72
                    [111111000000000002] => 71
                    [111111000000000010] => 69
                )

            [1] => Array
                (
                    [111111000000000008] => 77
                    [111111000000000007] => 76
                    [111111000000000006] => 75
                    [111111000000000005] => 74
                    [111111000000000001] => 70
                )

            [3] => Array
                (
                    [111111000000000013] => 81
                    [111111000000000012] => 80
                )

        )

    [wenzongji] => Array
        (
            [111111000000000013] => 243
            [111111000000000012] => 240
            [111111000000000011] => 237
            [111111000000000009] => 234
            [111111000000000008] => 231
            [111111000000000007] => 228
            [111111000000000006] => 225
            [111111000000000005] => 222
            [111111000000000004] => 219
            [111111000000000003] => 216
            [111111000000000002] => 213
            [111111000000000001] => 210
            [111111000000000010] => 207
        )

    [wenzongban] => Array
        (
            [2] => Array
                (
                    [111111000000000011] => 237
                    [111111000000000009] => 234
                    [111111000000000004] => 219
                    [111111000000000003] => 216
                    [111111000000000002] => 213
                    [111111000000000010] => 207
                )

            [1] => Array
                (
                    [111111000000000008] => 231
                    [111111000000000007] => 228
                    [111111000000000006] => 225
                    [111111000000000005] => 222
                    [111111000000000001] => 210
                )

            [3] => Array
                (
                    [111111000000000013] => 243
                    [111111000000000012] => 240
                )

        )

    [lizongji] => Array
        (
            [111111000000000009] => 297
            [111111000000000008] => 297
            [111111000000000011] => 297
            [111111000000000012] => 297
            [111111000000000013] => 297
            [111111000000000007] => 297
            [111111000000000006] => 297
            [111111000000000002] => 297
            [111111000000000001] => 297
            [111111000000000003] => 297
            [111111000000000004] => 297
            [111111000000000005] => 297
            [111111000000000010] => 297
        )

    [lizongban] => Array
        (
            [2] => Array
                (
                    [111111000000000009] => 297
                    [111111000000000011] => 297
                    [111111000000000004] => 297
                    [111111000000000003] => 297
                    [111111000000000002] => 297
                    [111111000000000010] => 297
                )

            [1] => Array
                (
                    [111111000000000008] => 297
                    [111111000000000007] => 297
                    [111111000000000006] => 297
                    [111111000000000005] => 297
                    [111111000000000001] => 297
                )

            [3] => Array
                (
                    [111111000000000013] => 297
                    [111111000000000012] => 297
                )

        )

    [zongfenji] => Array
        (
            [111111000000000013] => 764
            [111111000000000012] => 761
            [111111000000000011] => 758
            [111111000000000009] => 755
            [111111000000000008] => 752
            [111111000000000007] => 749
            [111111000000000006] => 746
            [111111000000000005] => 743
            [111111000000000004] => 740
            [111111000000000003] => 737
            [111111000000000002] => 734
            [111111000000000001] => 731
            [111111000000000010] => 728
        )

    [zongfenban] => Array
        (
            [2] => Array
                (
                    [111111000000000011] => 758
                    [111111000000000009] => 755
                    [111111000000000004] => 740
                    [111111000000000003] => 737
                    [111111000000000002] => 734
                    [111111000000000010] => 728
                )

            [1] => Array
                (
                    [111111000000000008] => 752
                    [111111000000000007] => 749
                    [111111000000000006] => 746
                    [111111000000000005] => 743
                    [111111000000000001] => 731
                )

            [3] => Array
                (
                    [111111000000000013] => 764
                    [111111000000000012] => 761
                )

        )

)
阅读 4.3k
4 个回答
  1. 导入到数据库,然后用mysql处理
    2.同分的帅的往前

建议是存到数据库,然后取出来的时候再计算名次,否则数据库中写死了,以后再在增删改数据的时候,名次还要重新计算.

数据库语句:

SELECT * FROM `成绩表` order by 分数,名次 ASC ,学号 DESC;
分数由小到大,当分数相同
名次有小到大,当名次相同
学号由大到小

同理可以通过数据库读出数据进行排名从而进行排名再存入数据库

php:
如果名次不存在,可以读取数据库,在php中计算名次

$arr=array(   '0' =>array('gobal' => 8, 
                          'gobal1'=>2
                    ), 
              '1' =>array('gobal' => 7, 
                          'gobal1'=>6
                    ) ,
              '2' =>array('gobal' => 8, 
                          'gobal1'=>6
                    ) ,
              '3' =>array('gobal' => 9, 
                          'gobal1'=>8
                    ) ,
              '4' =>array('gobal' => 9, 
                          'gobal1'=>9
                    ) ,
);
$arr=array_sort($arr,'gobal');
echo '<pre>';print_r($arr);
function array_sort($arr,$keys,$type='desc'){ 
    $keysvalue = $new_array = array();
    foreach ($arr as $k=>$v){
    $keysvalue[$k] = $v[$keys];
    }
    if($type == 'asc'){
    asort($keysvalue);
    }else{
    arsort($keysvalue);
    }
    reset($keysvalue);
    foreach ($keysvalue as $k=>$v){
    $new_array[$k] = $arr[$k];
    }
    return $new_array; 
} 

1- 导入之后再update
update table as t1 set 班名次 = (select count() from table as t2 where t1.班级 = t2.班级 and t1.年级 = t2.年级 and t1.成绩 < t2.成绩), 年级名次 = (select count() from table as t3 where t1.年级 = t3.年级 and t1.成绩 < t3.成绩)

2- 并列啊

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
1 篇内容引用
推荐问题
宣传栏