2017-10-11 10 views
1

私はこれを単語にする方法はわかりませんが、私はベストを尽くします。 私には番号があります。たとえば$number = 201。この数は次の100まで丸めます。例えば300です。私は201/300を示すために進行状況バーを表示したい。 $ number = 23の場合、プログレスバーに100から23が表示されます。$ number = 506は506/600です。PHPのパーセントバーの増加

今のところ、ブートストラップの進行状況バーがパーセンテージで実行されていることを理解しています。だから100%。 $ numberが100を超えるまではすべて問題ありません。100が100%と表示されるため、$ 200 = 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を使用します。この質問は、パーセンテージバーが500のうち450のように表示されるようにする方法です。

+0

450/500 * 100は、100のうちに同じ値を与えます。問題はありますか? – tan

+0

aria-valuemaxプロパティを最大値に設定しようとしましたか? –

+0

@tanこのシナリオでは、400は0として表示され、450は50%で表示され、500は100%で表示されます –

答えて

2

これは実際には非常に単純です。値を最も近い100に丸めたい場合はceil($number/100) * 100を使用します。あなたが「MAX」レベルを得ているしたら、その後、比率を計算することができます

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

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

このロジックでは、あなたが取得します:23のための

  • 23%、それは23÷100
  • を用いて評価されているため、 450用
  • 90%、それはあなたがしたい場合は、しかし、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

ありがとうございました.2番目の例は素晴らしい結果でした。 $ nextHundredを500で表示すると500と表示されます。何とか600を表示させることができますか? 501のように600が表示されますが、とにかく500も得られますか? –

0

これは実際には基本的な数式を使用するとさらに簡単です。受け取ったint/float値をint/floatのパーセンテージの最大値で除算した後、100倍した値を掛けた回数。

など。 200の50と400

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

の35はそうちょうど使用します。次に

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

あなたは、文字列を経由してこれを表示するだけで、yのうち、あなたの「xに対して$数と$ maxのを使用したい場合"パーセンテージバー。