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

显示:

  1. 不及格的人数:15人
  2. 分别为: 刘一(23分) 张一(34分) 李四(37分) 刘十(38分) 张五(39分) 李七(40分) 赵八(45分) 王六(46分) 张四(47分) 张十(49分) 张三(51分) 王三(54分) 赵二(55分) 张九(56分) 王九(58分)
  3.  
  4. 及格的人数:9人
  5. 分别为: 张二(60分) 张八(60分) 刘二(61分) 王十(65分) 赵九(66分) 刘五(66分) 赵四(66分) 王一(67分) 李十(69分)
  6.  
  7. 良好的人数:12人
  8. 分别为: 赵七(70分) 李五(70.5分) 李二(70.5分) 王二(71分) 刘七(76分) 王五(77分) 赵十(78分) 刘三(78分) 王八(78分) 李六(78分) 刘四(78分) 赵五(79分)
  9.  
  10. 中等的人数:5人
  11. 分别为: 李八(80分) 王四(84分) 张六(88分) 李一(89分) 李九(89分)
  12.  
  13. 优秀的人数:6人
  14. 分别为: 刘六(90分) 刘九(90分) 王七(90.2分) 赵一(91分) 李三(98分) 赵三(99分)
  15.  
  16. 异常的人数:3人
  17. 分别为: 刘八(-87分) 赵六(-80分) 张七(101分)