PHP查找编号变量的最接近百分位数

时间:2019-05-14 18:31:31

标签: php math

我计算出3个百分位值,将其存储在这样的变量中:

{{1}}

我的网站上的每个用户在变量$ percentile中都有一个20-100的值,我正尝试将其数字与上述三个变量之一最接近,因此我可以说:您是X百分位数的一部分

例如,如果用户的百分比值是'35',则他们将与$ 25匹配,因为这是最接近其数字的变量。

任何帮助将不胜感激

3 个答案:

答案 0 :(得分:0)

if($percentile < 67.5){
   echo $twentyfive
}  elseif($percentile > 67.5 && $percentile < 87.7){
   echo $fifty
}else{
   echo $seventyfive
}

答案 1 :(得分:0)

如果3个变量的值可以更改,则可以使用它。可能有更简洁的方法,但这应该可行。

//Set users percentile
$user_percentile = 35;
$user_percentile_category = 25;

switch ($user_percentile) {
    case $user_percentile <= $twentyfive:
        $user_percentile_category = '25';
        break;
    case ($user_percentile - $twentyfive) < $fifty - $user_percentile:
        $user_percentile_category = '25';
        break;
    case ($user_percentile - $twentyfive) >= $fifty - $user_percentile:
        $user_percentile_category = '50';
        break;
    case ($user_percentile - $fifty) < $seventyfive - $user_percentile:
        $user_percentile_category = '50';
        break;
    case ($user_percentile - $fifty) >= $seventyfive - $user_percentile:
        $user_percentile_category = '75';
        break;
    default:
        $user_percentile_category = '75';
}

答案 2 :(得分:0)

您可以为此使用以下代码:

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

$collection = [55,80,95];
$searchValue = 88;

echo getClosest($searchValue, $collection);

希望它对您有帮助。我已经从Find a matching or closest value in an array

中获取了参考

干杯!