HTML PHP 数学:使用排名值填充进度条
HTML PHP Math : Fill a progress bar using rank values
我有一个进度条需要填充,显示到下一级别的剩余等级点数。
例如:得到 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
值,然后我会将 $rank
值传递给 level()
函数以便检索级别,最后 next_rank()
函数获取级别和 return 剩余点数。
所以使用的数学是(get_rank($rank) * next_rank($level) / 2) / 10
。
使用此 return 剩余值(例如 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;
}
?>
感谢所有能提供帮助的人。
- 替换
<?php print get_rank($rank) * next_rank($level) / 2; ?>
by <?php print_r(($rank*100)/(get_rank($rank)+$rank)); ?>
应该可以完成你想要的工作。
- 对于
function level($rank)
如果我输入 level(10)
输出将是 10
因为你返回 $rank
没有任何计算。
我有一个进度条需要填充,显示到下一级别的剩余等级点数。
例如:得到 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
值,然后我会将 $rank
值传递给 level()
函数以便检索级别,最后 next_rank()
函数获取级别和 return 剩余点数。
所以使用的数学是(get_rank($rank) * next_rank($level) / 2) / 10
。
使用此 return 剩余值(例如 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;
}
?>
感谢所有能提供帮助的人。
- 替换
<?php print get_rank($rank) * next_rank($level) / 2; ?>
by<?php print_r(($rank*100)/(get_rank($rank)+$rank)); ?>
应该可以完成你想要的工作。 - 对于
function level($rank)
如果我输入level(10)
输出将是10
因为你返回$rank
没有任何计算。