PHP平均排名

时间:2015-06-01 08:25:20

标签: php math formula ranking

在Excel中有一个函数Rank Average(see documentation)。

我希望在PHP中也这样做。在网上看,我找到了很多排名解决方案,但是并没有很多人将重复考虑在内,当他们这样做时,我得到的结果与Excel给我的结果不一样。尽管如此,这非常重要。

理想情况下,我需要的是一个需要分数和数组来比较它的函数,并给出它的排名。

Excel的实际日期示例:

$array = array(5.80,6.00,6.00,5.60,3.20,3.00,3.60,5.70,3.60,1.90,5.00,5.80,3.00,3.80,5.00,3.00,6.00,5.70,5.00,4.90,4.20,3.60,5.00,4.90,4.90,3.00
3.30,4.80,4.60,4.10,4.70,6.00,3.30,4.30,4.30,3.00,3.10,6.00,1.90,3.80,5.00,2.00,2.80,3.00,4.20,3.00,5.50,6.00,5.00,5.00);

$score1 = 5.80;
$score2 = 6.00;

$rank1 = rankAvg($score1, $array); //should return 7.5
$rank2 = rankAvg($score2, $array); //should return 3.5

2 个答案:

答案 0 :(得分:1)

function rank_avg($value, $array, $order = 0) {
// sort  
  if ($order) sort ($array); else rsort($array);
// add item for counting from 1 but 0
  array_unshift($array, $value+1); 
// select all indexes vith the value
  $keys = array_keys($array, $value);
  if (count($keys) == 0) return NULL;
// calculate the rank
  return array_sum($keys) / count($keys);
}

echo rank_avg(25, array(20,23,25,27,29), 1);

答案 1 :(得分:0)

这一个就在我身边(http://codepad.org/bWF9F1vv),但我不得不改变一些事情。

request = require("request");
  content = "ABCDEF";
  options = {
    url: 'https://www.filepicker.io/api/store/S3',
    preambleCRLF: true,
    postambleCRLF: true,
    multipart: [
        {
          body: content
        }
      ],
    method: 'post',
    qs: {
      key: 'APIKEY',
      store: 'S3',
      mimetype: 'text/csv',
      path: 'some-path.csv',
      access: 'public',
    }
  };

  request(options, function(err, res, body) {
        console.log(res.statusCode);
        console.log(body);
  });

它返回一个完整的数组,而不是给定分数的值。但它会这样做。

相关问题