Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP查找编号变量的最近百分比_Php_Math - Fatal编程技术网

PHP查找编号变量的最近百分比

PHP查找编号变量的最近百分比,php,math,Php,Math,我计算了3个百分位值,这些值存储在如下变量中: $twentyfive = '55'; $fifty = '80'; $seventyfive = '95'; 我网站上的每个用户都有一个20-100之间的值存储在变量中:$percentile,我试图将他们的数字与上述三个变量中最接近的一个匹配,这样我就可以说:你是X百分位数的一部分 例如,如果用户的$percentile值为'35',他们将与$Twenty5匹配,因为这是与他们的数字最接近的变量 如果($percentile67.5&$per

我计算了3个百分位值,这些值存储在如下变量中:

$twentyfive = '55';
$fifty = '80';
$seventyfive = '95';
我网站上的每个用户都有一个20-100之间的值存储在变量中:$percentile,我试图将他们的数字与上述三个变量中最接近的一个匹配,这样我就可以说:你是X百分位数的一部分

例如,如果用户的$percentile值为'35',他们将与$Twenty5匹配,因为这是与他们的数字最接近的变量

如果($percentile<67.5),任何帮助都将不胜感激{
if($percentile < 67.5){
   echo $twentyfive
}  elseif($percentile > 67.5 && $percentile < 87.7){
   echo $fifty
}else{
   echo $seventyfive
}
回声二十五美元 }elseif($percentile>67.5&$percentile<87.7){ 五十美元 }否则{ 回声七十五美元 }
如果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';
}
//设置用户百分比
$user_百分位=35;
$user\u percentile\u category=25;
开关($user_百分位){
案例$user_百分位=$50-$user_百分位:
$user_percentile_category='50';
打破
案例($user_百分位-$50)<$seventyfive-$user_百分位:
$user_percentile_category='50';
打破
案例($user_百分位-$50)>=$seventyfive-$user_百分位:
$user_percentile_category='75';
打破
违约:
$user_percentile_category='75';
}

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

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);
希望对你有帮助。我已从中引用了参考资料


干杯

您应该尝试自己编写代码。如果您有问题,请发布您尝试过的内容,并清楚解释哪些内容不起作用,然后提供。读一个好问题。请务必阅读。给用户提供这些百分位数的范围是什么?比如二十五美元二十到五十美元?到因此,如果您不想硬编码值,则获取差值并将其除以2,然后将其添加到值中