百分比计算,未给出确切的值

时间:2015-07-29 15:50:46

标签: php percentage

我遇到了一个由表格和图像形成的进度条的问题。

这是表格形式

<td><?php echo $img1; ?></td>
<td><?php echo $img2; ?></td>
<td><?php echo $img3; ?></td>
<td><?php echo $img4; ?></td>
<td><?php echo $img5; ?></td>

这是php代码:

<?php
$value = 10000 //this value is obtained by SQL
$bar1 = 2600 //is the value of the first bar, obtained by SQL
$bar2 = 9950 //is the value of the second bar, obtained by SQL
$bar3 = 13010 //same as before
$bar4 = 17500 //same as before
$bar5 = 19500 //same as before

if($value > 0) && ($value < $bar1) {
$percent = ($value / $bar1) *100;
$bar1 = '<img src="progress.png" width="'.$percent.'" />';
}

if($value >= $bar1) {
$percent = '100';
$bar1 = '<img src="reached.png" width="'.$percent.'" />';
?>

并且对于第一个栏是好的,按预期工作,如果值是$ bar1金额的次要值,那么它将其显示为进度,如果相反,它高于$ bar1金额,它将其显示为已到达。

问题从其他栏开始,以第3栏为例:

<?php 
if($value > $bar2) && ($value < bar3) {
$percent = ($value / $bar3) *100;
$bar3 = '<img src="progress.png" width="'.$percent.'" />';
}
>?

显然百分比的反应是:76%,它几乎完全填满所有栏。事实上,之前的条形设置为9950,值为10000,因此在$ bar3(13010)上应显示类似(在30%之间),而不是76%。

目的很简单:

当$值,它填充$ bar1,然后它继续并开始填充$ bar2,如果这个也被填充,然后它移动到$ bar3 ..这直到$ value不够再填充或它到达最后的$ bar5。

但是,这种情况发生了“错误”。

我误解了这个?

1 个答案:

答案 0 :(得分:0)

我通过更改操作解决了这个问题:

$bar3_reduced = $bar3 - $bar2;
$new = $value - $bar2; //detract from the value the previous bar amount
$percent = ($new / $bar3_reduced)*100;

所以现在只比较&#34; new&#34;吧,而不是全部计算。