获得每个级别的百分比

时间:2017-04-06 21:52:32

标签: php progress-bar percentage

我已根据帖子创建了一个关卡系统。

Level 1 = 1-25 posts
Level 2 = 26-50 posts
Level 3 = 51-250 posts, etc...

我还想展示一个进度条

通常你会这样:

$author_posts = 15;
$progress = ($author_posts * 100) / 25; //(level 1)

进度百分比为60%

但是,如果用户已经到达level 3,我应该使用什么?

if( $author_posts >= '250' ) {
    $progress   = '100';
} elseif( $author_posts < '51' ) {
    $progress   = '0';
} else {
    $progress   = // what should I use here?
}


<div class="progress-bar" style="width:<?php echo esc_attr( $progress ); ?>%;"></div>

2 个答案:

答案 0 :(得分:2)

您所包含的if块意味着用户的进度为0%,直到达到该级别的下限。那么,我们可以假设,一旦违反,该边界下面的任何帖子都不会算作百分比吗?这意味着只有51到250的帖子计为百分点,给出200个帖子(含)的范围。所以1 post = 0.5%。

如果是的话

$progress = round( ( ( $author_posts - 51 ) / 200 ) * 100 )
  

51个帖子= 0%

     

52个帖子= 1%(向上舍入)

     

200个帖子= 75%

此公式的可重用版本可能类似于

$progress = round( ( ( $author_posts - $lower ) / ( ( $upper - $lower ) + 1 ) ) * 100 )

在每个级别内重新定义$upper$lower边界。

答案 1 :(得分:0)

使用此:

if( $author_posts >= '250' ) {
    $progress   = '100';
} elseif( $author_posts < '51' ) {
    $progress   = '0';
} else {
    $progress   = (($author_posts - 50) / 200) * 100;
}

<div class="progress-bar" style="width:<?php echo esc_attr( $progress ); ?>%;"></div>