php实现excel中rank函数功能的方法


Posted in PHP onJanuary 20, 2015

本文实例讲述了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)

//获得一组数的名次的数组

function rank(array $array){

        foreach($array as $val){

                $repeat=get_array_repeats($val,$array);

                $num=gt_array_values($val,$array);

                $rank[]=count($array)-$num-$repeat+1;

        }

        return $rank;

}
//获得比自己数小的个数

function gt_array_values($val,array $array){

        $num=0;

        for($i=0;$i<count($array);$i++){

                if($val>$array[$i]){

                        $num++;

                }

        }

        return $num;

}

//获得这个数的重复次数
function get_array_repeats($string,array $array) {

        $count = array_count_values($array);

        foreach ($count as $key => $value) {

                 if ($key == $string) {

                  return $value;

                  }

         }

}

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
在php中使用sockets:从新闻组中获取文章
Oct 09 PHP
在windows iis5下安装php4.0+mysql之我见
Oct 09 PHP
需要使用php模板的朋友必看的很多个顶级PHP模板引擎比较分析
May 26 PHP
snoopy 强大的PHP采集类使用实例代码
Dec 09 PHP
解析在zend Farmework下如何创立一个FORM表单
Jun 28 PHP
关于PHP语言构造器介绍
Jul 08 PHP
php中Ctype函数用法详解
Dec 09 PHP
php+mysql数据库实现无限分类的方法
Dec 12 PHP
PHP获得数组交集与差集的方法
Jun 10 PHP
浅谈PHP中output_buffering
Jul 13 PHP
PHP读取文件内容的五种方式
Dec 28 PHP
PHP使用Memcache时模拟命名空间及缓存失效问题的解决
Feb 27 PHP
PHP中error_log()函数的使用方法
Jan 20 #PHP
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
Jan 20 #PHP
php中解析带中文字符的url函数分享
Jan 20 #PHP
PHP中使用正则表达式提取中文实现笔记
Jan 20 #PHP
php中的观察者模式简单实例
Jan 20 #PHP
php 5.6版本中编写一个PHP扩展的简单示例
Jan 20 #PHP
PHP函数extension_loaded()用法实例
Jan 19 #PHP
You might like
一棵php的类树(支持无限分类)
2006/10/09 PHP
PHP删除目录及目录下所有文件的方法详解
2013/06/06 PHP
深入php处理整数函数的详解
2013/06/09 PHP
php cURL和Rolling cURL并发方式比较
2013/10/30 PHP
PHP图片处理之使用imagecopy函数添加图片水印实例
2014/11/19 PHP
PHP使用pear自带的mail类库发邮件的方法
2015/07/08 PHP
php实现留言板功能
2017/03/05 PHP
PHP PDOStatement::fetchColumn讲解
2019/01/31 PHP
使用Jquery Aajx访问WCF服务(GET、POST、PUT、DELETE)
2012/03/16 Javascript
使用jquery实现以post打开新窗口
2014/03/19 Javascript
js实现三张图(文)片一起切换的banner焦点图
2015/08/25 Javascript
JavaScript动态插入CSS的方法
2015/12/10 Javascript
谈谈因Vue.js引发关于getter和setter的思考
2016/12/02 Javascript
react-router JS 控制路由跳转实例
2017/06/15 Javascript
vue中简单弹框dialog的实现方法
2018/02/26 Javascript
JS引用传递与值传递的区别与用法分析
2018/06/01 Javascript
JavaScript使用indexOf()实现数组去重的方法分析
2018/09/04 Javascript
vue项目搭建以及全家桶的使用详细教程(小结)
2018/12/19 Javascript
javascript随机变色实例代码
2019/10/15 Javascript
Vue可自定义tab组件用法实例
2019/10/24 Javascript
[03:42]2018完美盛典-《加冕》
2018/12/16 DOTA
Python内建数据结构详解
2016/02/03 Python
ubuntu中配置pyqt4环境教程
2017/12/27 Python
python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
2018/06/04 Python
pyqt5 删除layout中的所有widget方法
2019/06/25 Python
python的等深分箱实例
2019/11/22 Python
python数据预处理 :数据共线性处理详解
2020/02/24 Python
详解PyQt5中textBrowser显示print语句输出的简单方法
2020/08/07 Python
乌克兰机票、铁路和巴士票、酒店搜索、保险:Tickets.ua
2020/01/11 全球购物
CSS代码检查工具stylelint的使用方法详解
2021/03/27 HTML / CSS
学生会个人自荐书范文
2014/02/12 职场文书
采购求职信
2014/03/17 职场文书
客服专员岗位职责范本
2015/04/07 职场文书
主婚人致辞精选
2015/07/28 职场文书
PyQt5 显示超清高分辨率图片的方法
2021/04/11 Python
Prometheus 监控MySQL使用grafana展示
2021/08/30 MySQL