2017-10-11 5 views
1

나는 이것을 단어에 넣는 방법을 모르지만 최선을 다할 것입니다. 그래서 숫자가 있습니다. 예 : $number = 201. 이 숫자는 다음 백까지 올립니다. 그래서 300입니다. 진행률 표시 줄에 201/300을 보여주고 싶습니다. 또는 $ number = 23 인 경우 진행률 표시 줄에 100 개 중 23 개를 표시하고 싶습니다. $ number = 506은 506/600을 표시합니다.PHP 백분율 막대 증가

지금 당장은 부트 스트랩 진행률 표시 줄이 백분율로 실행된다는 것을 알고 있습니다. 그래서 100 %. 그래서 $ number가 100을 넘을 때까지는 모든 것이 잘됩니다. 왜냐하면 100이 100 %로 표시되기 때문에 $ 200 = 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을 사용합니다. 이 질문은 백분율 막대가 500 개 중 450과 같은 것을 표시하는 방법에 관한 것입니다.

+0

450/500 * 100은 100에서 동일한 것을 제공합니다. 문제가 있습니까? – tan

+0

aria-valuemax 속성을 최대 값으로 설정해 보았습니까? –

+0

@tan이 시나리오에서 400을 0으로 표시하려면 450을 100 %에서 50 %로 표시하고 500으로 표시하십시오. –

답변

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
  • 을 사용하여 평가하기 때문에 450
  • 90%, 그것은 당신이원하는 경우, 그러나 450÷500

을 사용하여 평가하기 때문에가 (당신이 (450-400)÷(500-400)로 평가하기 원하기 때문에) 당신이 50%, 당신은 기본적으로 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

이것은 실제로 기본 수학을 사용하면 더 간단합니다. 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 용 $ 수와 $ 최대를 사용하려는 경우 "백분율 막대.