- <?php
- header("Content-Type:text/html;charset=utf-8");
- $result=array(
- '张一'=>'34','王一'=>'67','李一'=>'89','赵一'=>'91','刘一'=>'23',
- '张二'=>'60','王二'=>'71','李二'=>'70.5','赵二'=>'55','刘二'=>'61',
- '张三'=>'51','王三'=>'54','李三'=>'98','赵三'=>'99','刘三'=>'78',
- '张四'=>'47','王四'=>'84','李四'=>'37','赵四'=>'66','刘四'=>'78',
- '张五'=>'39','王五'=>'77','李五'=>'70.5','赵五'=>'79','刘五'=>'66',
- '张六'=>'88','王六'=>'46','李六'=>'78','赵六'=>'-80','刘六'=>'90',
- '张七'=>'101','王七'=>'90.2','李七'=>'40','赵七'=>'70','刘七'=>'76',
- '张八'=>'60','王八'=>'78','李八'=>'80','赵八'=>'45','刘八'=>'-87',
- '张九'=>'56','王九'=>'58','李九'=>'89','赵九'=>'66','刘九'=>'90',
- '张十'=>'49','王十'=>'65','李十'=>'69','赵十'=>'78','刘十'=>'38');
- $level=array('不及格','及格','良好','中等','优秀');
- //$level=array('F','D','C','B','A');
- //根据值大小重新排列$result数组
- asort($result);
- //$levelResults做为全局数组,用来装分类结果,如array(“不及格”=>array(“张一”=>“34”,...),“及格”=>array(“王一”=>"67",...))
- $levelResults=array($level[0]=>array(),$level[1]=>array(),$level[2]=>array(),$level[3]=>array(),$level[4]=>array(),"异常"=>array());
- //主要处理程序,将分类结果装入全局数组$levelResults
- processResults($result,$level);
- //将做好的全局数组$levelResults按规定格式打印出来
- printResults($levelResults);
- function processResults($result,$level){
- global $levelResults;//使用全局数组$levelResults
- foreach($result as $name => $result){ //遍历成绩数组取出名字和成绩
- if($result<0||$result>100){
- $levelResults["异常"][$name]=$result;//成绩小于0分并且大于100分的成绩为异常数据,装进[异常]=>array([名字]=>[成绩],...)里
- }else if($result>=0&&$result<60){
- $levelResults[$level[0]][$name]=$result;//$level[0]是不及格,装进[不及格]=>array([名字]=>[成绩],...)里
- }
- else if($result>=60&&$result<70){
- $levelResults[$level[1]][$name]=$result;//$level[1]是及格
- }
- else if($result>=70&&$result<80){
- $levelResults[$level[2]][$name]=$result;//$level[2]是良好
- }
- else if($result>=80&&$result<90){
- $levelResults[$level[3]][$name]=$result;//$level[3]是中等
- }else{
- $levelResults[$level[4]][$name]=$result;//$level[4]是优秀
- }
- }
- }
- function printResults($levelResults){
- foreach($levelResults as $levelName => $resultArr){//循环取得分类名称,如$levelName=不及格...
- echo $levelName."的人数:".count($resultArr)."人";//$resultArr为该分类下的数组,里面装名单和成绩
- echo "<br/>";
- echo "分别为: ";
- foreach($resultArr as $name => $result){ //嵌套循环取出该分类下的所有名单和成绩
- echo $name.'('.$result.'分) ';
- }
- echo "<br/>";
- echo "<br/>";
- }
- }
- ?>
显示:
- 不及格的人数:15人
- 分别为: 刘一(23分) 张一(34分) 李四(37分) 刘十(38分) 张五(39分) 李七(40分) 赵八(45分) 王六(46分) 张四(47分) 张十(49分) 张三(51分) 王三(54分) 赵二(55分) 张九(56分) 王九(58分)
- 及格的人数:9人
- 分别为: 张二(60分) 张八(60分) 刘二(61分) 王十(65分) 赵九(66分) 刘五(66分) 赵四(66分) 王一(67分) 李十(69分)
- 良好的人数:12人
- 分别为: 赵七(70分) 李五(70.5分) 李二(70.5分) 王二(71分) 刘七(76分) 王五(77分) 赵十(78分) 刘三(78分) 王八(78分) 李六(78分) 刘四(78分) 赵五(79分)
- 中等的人数:5人
- 分别为: 李八(80分) 王四(84分) 张六(88分) 李一(89分) 李九(89分)
- 优秀的人数:6人
- 分别为: 刘六(90分) 刘九(90分) 王七(90.2分) 赵一(91分) 李三(98分) 赵三(99分)
- 异常的人数:3人
- 分别为: 刘八(-87分) 赵六(-80分) 张七(101分)