php 对数组平均分配,php – 如何在存在关系时为数组分配排名

我玩得很开心!

function rank($input)

{

$output = array();

$ranking = $input; sort($ranking); $ranking = array_flip($ranking);

$last_val = -1;

foreach($ranking as $key => $val){

$repetitions = ($val-$last_val-1);

$last_val = $val;

if($repetitions) {

$ranking[$key] = (($val*($repetitions+1))-($repetitions+1)*(($repetitions)/2))/($repetitions+1)+1 ;

} else {

$ranking[$key] = $val+1;

}

}

foreach($input as $key => $val){

$output[$key] = $ranking[$val];

}

return $output;

}

像这样使用它:

$a = array(4,76,34,13,34);

$c = rank($a);

print_r($c);

将输出:

Array

(

[0] => 1

[1] => 5

[2] => 3.5

[3] => 2

[4] => 3.5

)

这是一样的:

Array(1, 5, 3.5, 2, 3.5)

如预期!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值