VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > PHP >
  • php实现excel中rank函数功能的方法

这篇文章主要介绍了php实现excel中rank函数功能的方法,较为详细的分析了rank函数的功能及具体实现方法,需要的朋友可以参考下

本文实例讲述了php实现excel中rank函数功能的方法。分享给大家供大家参考。具体分析如下:

sql语句实现排名是像这样的如:

总分成绩为 195,180,180,161,名次分别为1,2,3,4,遇到并列的情况也是按照顺序的,而Excel函数rank排名得到的结果是1,2,2,4,遇到并列跳过中间的3

下面的函数模拟的就是这种情况

函数如下(不知道有没有更好的实现方法):

公式为: 名次=总人数--比自己小的数的个数-这个分数重复次数+1(加上自己)

得到名次的数组再根据对应的id写入到数据库,就实现rank的计算功能

(当然这个也可以改成这样195,180,180,165,名次是这样的1,2,2,3)代码如下:

  1. //获得一组数的名次的数组 
  2. function rank(array $array){ 
  3.         foreach($array as $val){ 
  4.                 $repeat=get_array_repeats($val,$array); 
  5.                 $num=gt_array_values($val,$array); 
  6.                 $rank[]=count($array)-$num-$repeat+1; 
  7.         } 
  8.         return $rank
  9. //获得比自己数小的个数 
  10. function gt_array_values($val,array $array){ 
  11.         $num=0; 
  12.         for($i=0;$i<count($array);$i++){ 
  13.                 if($val>$array[$i]){ 
  14.                         $num++; 
  15.                 } 
  16.         } 
  17.         return $num
  18. //获得这个数的重复次数 
  19.  
  20. function get_array_repeats($string,array $array) { 
  21.         $count = array_count_values($array); 
  22.         foreach ($count as $key => $value) { 
  23.                  if ($key == $string) { 
  24.                   return $value
  25.                   } 
  26.          } 
  27. }
  28.  

 

这篇文章主要介绍了php实现excel中rank函数功能的方法,较为详细的分析了rank函数的功能及具体实现方法,需要的朋友可以参考下

本文实例讲述了php实现excel中rank函数功能的方法。分享给大家供大家参考。具体分析如下:

sql语句实现排名是像这样的如:

总分成绩为 195,180,180,161,名次分别为1,2,3,4,遇到并列的情况也是按照顺序的,而Excel函数rank排名得到的结果是1,2,2,4,遇到并列跳过中间的3

下面的函数模拟的就是这种情况

函数如下(不知道有没有更好的实现方法):

公式为: 名次=总人数--比自己小的数的个数-这个分数重复次数+1(加上自己)

得到名次的数组再根据对应的id写入到数据库,就实现rank的计算功能

(当然这个也可以改成这样195,180,180,165,名次是这样的1,2,2,3)代码如下:

  1. //获得一组数的名次的数组 
  2. function rank(array $array){ 
  3.         foreach($array as $val){ 
  4.                 $repeat=get_array_repeats($val,$array); 
  5.                 $num=gt_array_values($val,$array); 
  6.                 $rank[]=count($array)-$num-$repeat+1; 
  7.         } 
  8.         return $rank
  9. //获得比自己数小的个数 
  10. function gt_array_values($val,array $array){ 
  11.         $num=0; 
  12.         for($i=0;$i<count($array);$i++){ 
  13.                 if($val>$array[$i]){ 
  14.                         $num++; 
  15.                 } 
  16.         } 
  17.         return $num
  18. //获得这个数的重复次数 
  19.  
  20. function get_array_repeats($string,array $array) { 
  21.         $count = array_count_values($array); 
  22.         foreach ($count as $key => $value) { 
  23.                  if ($key == $string) { 
  24.                   return $value
  25.                   } 
  26.          } 
  27. }
  28.  

出处:http://www.phpfensi.com/php/20210508/15062.html

 


相关教程