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 相关文章推荐
一个用于mysql的数据库抽象层函数库
Oct 09 PHP
微信开发之网页授权获取用户信息(二)
Jan 08 PHP
php bootstrap实现简单登录
Mar 08 PHP
php版微信公众平台之微信网页登陆授权示例
Sep 23 PHP
详谈PHP中的密码安全性Password Hashing
Feb 04 PHP
PHP解决中文乱码
Apr 28 PHP
如何修改yii2.0自带的user表为其它的表
Aug 01 PHP
PHP生成腾讯云COS接口需要的请求签名
May 20 PHP
phpstudy2018升级MySQL5.5为5.7教程(图文)
Oct 24 PHP
PHP创建文件及写入数据(覆盖写入,追加写入)的方法详解
Feb 15 PHP
php计数排序算法的实现代码(附四个实例代码)
Mar 31 PHP
PHPStorm2020.1永久激活及下载更新至2020(推荐)
Sep 25 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
星际争霸任务指南——虫族
2020/03/04 星际争霸
利用curl 多线程 模拟 并发的详解
2013/06/14 PHP
CodeIgniter表单验证方法实例详解
2016/03/03 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
让您的菜单不离网站
2006/10/03 Javascript
javascript 播放器 控制
2007/01/22 Javascript
IE 缓存策略的BUG的解决方法
2007/07/21 Javascript
js关闭子窗体刷新父窗体实现方法
2012/12/04 Javascript
gridpanel动态加载数据的实例代码
2013/07/18 Javascript
JavaScript bold方法入门实例(把指定文字显示为粗体)
2014/10/17 Javascript
JavaScript实现下拉菜单的显示和隐藏
2016/01/05 Javascript
javascript面向对象程序设计高级特性经典教程(值得收藏)
2016/05/19 Javascript
基于angularjs实现图片放大镜效果
2016/08/31 Javascript
jQuery使用getJSON方法获取json数据完整示例
2016/09/13 Javascript
jQuery鼠标事件总结
2016/10/13 Javascript
Node.js调试技术总结分享
2017/03/12 Javascript
一次围绕setTimeout的前端面试经验分享
2017/06/15 Javascript
基于dataset的使用和图片延时加载的实现方法
2017/12/11 Javascript
Angular利用内容投射向组件输入ngForOf模板的方法
2018/03/05 Javascript
vue使用canvas实现移动端手写签名
2020/09/22 Javascript
Python处理文本换行符实例代码
2018/02/03 Python
Python设计模式之外观模式实例详解
2019/01/17 Python
Python实现合并两个有序链表的方法示例
2019/01/31 Python
python远程邮件控制电脑升级版
2019/05/23 Python
详解Python的三种拷贝方式
2020/02/11 Python
keras绘制acc和loss曲线图实例
2020/06/15 Python
PyCharm2020最新激活码+激活码补丁(亲测最新版PyCharm2020.2激活成功)
2020/11/25 Python
python 实现数据库中数据添加、查询与更新的示例代码
2020/12/07 Python
HTML5新增的8类INPUT输入类型介绍
2015/07/06 HTML / CSS
巴西体育用品商店:Lojão dos Esportes
2018/07/21 全球购物
工商管理实习自我鉴定
2013/09/28 职场文书
产品售后服务承诺书
2014/05/21 职场文书
测绘工程专业求职信
2014/07/15 职场文书
2014年重阳节活动策划方案书
2014/09/16 职场文书
2014年党建工作汇报材料
2014/11/02 职场文书
趵突泉导游词
2015/02/03 职场文书