PHP:根据固定值计算平均值

时间:2018-12-12 13:16:25

标签: php

在可变数量的值中,我需要计算平均值。挑战:平均值只能是以下固定值之一(最接近!):

return_sequences=False

我计算平均值如下:

$allowedAverageValues = [0.66, 1, 1.33, 1.66, 2]

如何确定$ allowedAverageValues中最接近$ average的值?因此,理想的结果是$randomValues = [1.33, 1, 0.66, 1, 2, 1.33]; $average = array_sum($randomValues)/count($randomValues); // returns 1.22

2 个答案:

答案 0 :(得分:0)

我认为这就是您要寻找的:

<?php
function getClosest($search, $arr) {
   $closest = null;
   foreach ($arr as $item) {
      if ($closest === null || abs($search - $closest) > abs($item - $search)) {
         $closest = $item;
      }
   }
   return $closest;
}

$randomValues = [1.33, 1, 0.66, 1, 2, 1.33];
$average = array_sum($randomValues)/count($randomValues); // returns 1.22
$res = getClosest($average, $randomValues);

print_r($res); // returns 1.33

第一个答案Find a matching or closest value in an array中的功能

答案 1 :(得分:0)

$arr = [0.66, 1, 1.33, 1.66, 2];

function getNearest($arr,$var){
    usort($arr, function($a,$b) use ($var){

        return  abs($a - $var) - abs($b - $var);
    });
   return array_shift($arr);
}

$randomV = [1.33, 1, 0.66, 1, 2, 1.33];
$ave = array_sum($randomV)/count($randomV); 
$res = getNearest($ave, $randomV);

print_r($res);