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 相关文章推荐
杏林同学录(六)
Oct 09 PHP
php生成缩略图的类代码
Oct 02 PHP
PHP中str_replace函数使用小结
Oct 11 PHP
攻克CakePHP系列三 表单数据增删改
Oct 22 PHP
PHP简单检测网址是否能够正常打开的方法
Sep 04 PHP
php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
Nov 09 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
May 29 PHP
PHP实现的AES加密、解密封装类与用法示例
Aug 02 PHP
Centos7 Yum安装PHP7.2流程教程详解
Jul 02 PHP
PHP命名空间定义与用法实例分析
Aug 14 PHP
PHP设计模式之数据访问对象模式(DAO)原理与用法实例分析
Dec 12 PHP
PHP数组与字符串互相转换实例
May 05 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
Terran兵种介绍
2020/03/14 星际争霸
PHP之sprintf函数用法详解
2014/11/12 PHP
PHP session文件独占锁引起阻塞问题解决方法
2015/05/12 PHP
Zend Framework实现Zend_View集成Smarty模板系统的方法
2016/03/05 PHP
Yii框架弹出窗口组件CJuiDialog用法分析
2017/01/07 PHP
extjs 列表框(multiselect)的动态添加列表项的方法
2009/07/31 Javascript
JQuery的一些小应用收集
2010/03/27 Javascript
JQuery的自定义事件代码,触发,绑定简单实例
2013/08/01 Javascript
JS实现alert中显示换行的方法
2015/12/17 Javascript
JavaScript Math.round() 方法
2015/12/18 Javascript
JavaScript实现点击按钮字体放大、缩小
2016/02/29 Javascript
Javascript之面向对象--封装
2016/12/02 Javascript
Vue.js使用$.ajax和vue-resource实现OAuth的注册、登录、注销和API调用
2017/05/10 Javascript
JS实现基于Sketch.js模拟成群游动的蝌蚪运动动画效果【附demo源码下载】
2017/08/18 Javascript
原生JavaScript实现的简单放大镜效果示例
2018/02/07 Javascript
ajax与jsonp的区别及用法
2018/10/16 Javascript
微信小程序实现的点击按钮 弹出底部上拉菜单功能示例
2018/12/20 Javascript
微信二次分享报错invalid signature问题及解决方法
2019/04/01 Javascript
layui动态绑定事件的方法
2019/09/20 Javascript
基于JavaScript实现简单抽奖功能代码实例
2020/10/20 Javascript
[13:25]VP vs VICI (BO3)
2018/06/07 DOTA
Python-嵌套列表list的全面解析
2016/06/08 Python
Python2实现的LED大数字显示效果示例
2017/09/04 Python
在python中实现强制关闭线程的示例
2019/01/22 Python
python协程之动态添加任务的方法
2019/02/19 Python
Python3多线程版TCP端口扫描器
2019/08/31 Python
浅谈Python3多线程之间的执行顺序问题
2020/05/02 Python
Python3创建Django项目的几种方法(3种)
2020/06/03 Python
Html5大文件断点续传实现方法
2015/12/05 HTML / CSS
澳大利亚婴儿礼品公司:The Baby Gift Company
2018/11/04 全球购物
Yves Rocher捷克官方网站:植物化妆品的创造者
2019/07/31 全球购物
便利店投资创业计划书
2014/02/08 职场文书
工程建设实施方案
2014/03/14 职场文书
办公室主任竞聘演讲稿
2014/05/15 职场文书
奥林匹克的口号
2014/06/13 职场文书
2015年会计人员工作总结
2015/05/22 职场文书