2017-10-11 190 views
1

我不知道如何把它放在文字中,但我會盡我所能。 所以我有一個號碼。例如,$number = 201。這個數字會輪到上百個。例如300。我想顯示我的進度條顯示201/300。或者如果$ number = 23,我希望進度條顯示23個滿分100。或$ number = 506,顯示506/600。PHP增長百分比

所以現在,我明白引導程序進度條按百分比運行。所以100%。所以一切都很好,直到$數字超過100爲止。因爲它不能在$ 200 = 100的情況下工作,因爲100會顯示爲100%。

我很確定我需要什麼,是一個簡單的數學,但現在,我想不出如何做到這一點。

<div class="progress" style="margin-bottom:0px"> 
    <div class="progress-bar progress-bar-info" role="progressbar" aria-valuenow="2" aria-valuemin="0" aria-valuemax="100" style="min-width: 2em; width: <?php echo $number; ?>%;"> 
    <?php echo $number; ?> 
    </div> 
</div> 

謝謝

編輯:這不是如何四捨五入到最接近的10本已經做了重複。使用ceil($ number/100)* 100;這個問題是關於如何讓百分比條顯示類似於450的其中一條500

+0

450/500 * 100會給你同樣的100分。有沒有問題呢? – tan

+0

您是否嘗試將aria-valuemax屬性設置爲最大值? –

+0

@tan在這種情況下,我想要400顯示爲0,450顯示爲50%和500顯示爲100% –

回答

2

其實很簡單:您想將值舍入到最接近的100,這可以通過使用ceil($number/100) * 100來完成。你已經得到了「最大」級別之後,就可以計算出比例:

<?php 
    // Get the next closest 100 
    $nextHundred = ceil($number/100) * 100; 

    // Calculate ratio against nextHundred 
    $ratio = $number/$nextHundred * 100; 
?> 

有了這個邏輯,你會得到:

  • 23% 23,因爲它是使用23÷100
  • 評估
  • 90%爲450,因爲它是使用450÷500

但是,如果你想評估給你50%(因爲你要評價它爲(450-400)÷(500-400)),你基本上是要求100的模量:

// Calculate modulus 
$ratio = $number % 100; 

在這兩種情況下,你可以在你的邏輯代替$number使用$ratio。請記住,您還應該更新aria-valuenow,以便於訪問。要在進度條中顯示比例,而不是使用$ratio,只需回顯$number.'/'.$nextHundred

<div class="progress" style="margin-bottom:0px"> 
    <div class="progress-bar progress-bar-info" role="progressbar" aria-valuenow="<?php echo $ratio; ?>" aria-valuemin="0" aria-valuemax="100" style="min-width: 2em; width: <?php echo $ratio; ?>%;"> 
    <?php echo $number.'/'.$nextHundred; ?> 
    </div> 
</div> 
+0

謝謝,你的第二個例子效果很好。用$ nextHundred,在500時顯示500.可以以某種方式,我能夠讓它顯示600?就像501會顯示600,反正我也可以得到500呢? –

0

這實際上使用基本數學更簡單。所接收的整數/浮點值除以整數/浮點百分比最大值,然後全部乘以100。 200:50,400

50/200 * 100 = 25. (25%) 
35/400 * 100 = 8.75 (8.75%) 

35所以只需使用:

$percentage = (($number/$max) * 100) 

然後,如果你想通過字符串來顯示這一點,只使用$數量和$最大爲貴「的Y中取X的「百分比吧。