php实现数据排名 php实现数据排名前三

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

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

10余年专注成都网站制作,成都企业网站定制,个人网站制作服务,为大家分享网站制作知识、方案,网站设计流程、步骤,成功服务上千家企业。为您提供网站建设,网站制作,网页设计及定制高端网站建设服务,专注于成都企业网站定制,高端网页制作,对生料搅拌车等多个方面,拥有丰富的网站维护经验。

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;$icount($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数组中单个数据在数组中的排名怎么实现?小于某给定排名值的数据以"-(横杠)"替代,不改就原数组顺序?

sort($arr);由小到大的顺序排序(第二个参数为按什么方式排序)忽略键名的数组排序

rsort($arr);由大到小的顺序排序(第二个参数为按什么方式排序)忽略键名的数组排序

php如何实现分数排名,判断该学生第几名,如图

先根据票数倒序查询票数表,sql语句大概是

"SELECT 学生id,票数 FROM 票数表 ORDER BY 票数 DESC";假设得到的结果集赋值为 $res,

再用PHP遍历,

$student = array();

foreach ($res as $key = $value) {

$student[$value['学生id']] = $key +1;

最后就可以得到student排名数组,键是学生的id,值就是学生的排名。


网页名称:php实现数据排名 php实现数据排名前三
文章源于:http://pwwzsj.com/article/hjgoic.html