【问题标题】:HTML PHP Math : Fill a progress bar using rank valuesHTML PHP Math:使用排名值填充进度条
【发布时间】:2016-02-22 11:52:11
【问题描述】:

我有一个进度条要填充,显示剩余的等级点到下一个级别。

例如:得到 25 分,下一个排名是 50 分,所以条形必须填充 50%,如果我得到 40 分,则必须填充 75% 等等。

<div class="progress-bar" role="progressbar" aria-valuenow="<?php print $rank; ?>" aria-valuemin="0" aria-valuemax="100" style="width: <?php print get_rank($rank) * next_rank($level) / 2; ?>%;">

get_rank() 函数获取排名点并转换为剩余点减去$rank 值,然后我将$rank 值传递给level() 函数以检索级别,最后next_rank() 函数得到关卡并返回剩余点数。

所以使用的数学是(get_rank($rank) * next_rank($level) / 2) / 10

使用这个返回剩余的值(例如 19 * 20 / 2 = 500 / 10 = 19% )以 0.25% 的宽度打印,我如何反转结果以获得 99.75% 而不是 0.25?

为了完整起见,将粘贴完整的功能:

 <?php 
function get_rank($rank) {
    if ( $rank >= 5    )  { $rem_point = 20   - $rank; }
    if ( $rank >= 20   )  { $rem_point = 50   - $rank; }
    if ( $rank >= 50   )  { $rem_point = 100  - $rank; }
    if ( $rank >= 100  )  { $rem_point = 500  - $rank; }
    if ( $rank >= 500  )  { $rem_point = 1000 - $rank; }
    if ( $rank >= 1000 )  { $rem_point = 2500 - $rank; }
    if ( $rank >= 2500 )  { $rem_point = 5000 - $rank; }

    return $rem_point;
}
function level($rank) {
        if ( $rank <= 5    )   { $level = 1; }
    elseif ( $rank <= 20   )   { $level = 2; }
    elseif ( $rank <= 50   )   { $level = 3; }
    elseif ( $rank <= 100  )   { $level = 4; }
    elseif ( $rank <= 500  )   { $level = 5; }
    elseif ( $rank <= 1000 )   { $level = 6; }
    elseif ( $rank <= 2500 )   { $level = 7; }
    elseif ( $rank <= 5000 )   { $level = 8; }

    return $level;
}
function next_rank($level) {
        if ( $level = 1 )     { $next_r = 5;      }
    elseif ( $level = 2 )     { $next_r = 20;     }
    elseif ( $level = 3 )     { $next_r = 50;     }
    elseif ( $level = 4 )     { $next_r = 100;    }
    elseif ( $level = 5 )     { $next_r = 500;    }
    elseif ( $level = 6 )     { $next_r = 1000;   }
    elseif ( $level = 7 )     { $next_r = 2500;   }
    elseif ( $level = 8 )     { $next_r = 5000;   }

    return $next_r;
}
?>

感谢所有可以提供帮助的人。

【问题讨论】:

  • 问题是什么?
  • @Zéychin 问题是我如何通过数学表达式计算进度条的宽度值

标签: php html math progress-bar


【解决方案1】:
  1. 替换&lt;?php print get_rank($rank) * next_rank($level) / 2; ?&gt; by &lt;?php print_r(($rank*100)/(get_rank($rank)+$rank)); ?&gt; 应该做你想做的工作。
  2. 对于function level($rank),如果我输入level(10),则输出将为10,因为您将返回$rank,无需任何计算。

【讨论】:

  • 2.你能解释一下吗?
  • 是的,40(40*100/50)%50 如果我们想找到 x 相对于 y 的百分比,那么公式将为 (x*100/y)。谢谢。如果可行,请接受答案。谢谢。
猜你喜欢
  • 1970-01-01
  • 2011-06-06
  • 1970-01-01
  • 1970-01-01
  • 2014-07-27
  • 2017-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多