计算foreach循环中当前迭代次数的百分比

时间:2014-05-14 19:08:44

标签: php

我正在尝试构建一个获取循环迭代当前百分比的脚本。

我有:

<?php
    $counter = 0;
    $total = 100;
    foreach($key as value) {
      $counter = $counter + 1;
      //looping here
      $percentage = $counter/total;
    }

在我的案例中,循环内输出5次迭代

0.01
0.02
0.03
0.04
0.05

我需要输出

20
40
60
80
100

执行类似当前百分比完成的操作。

更随机的exmaples 对于10个循环应

10
20
30
40
50
60
70
80
90
100

100循环

1
2
.
.
100

6循环

16.6
//brain damaged

对不起noob数学php的问题,但我今天在迷雾中没有几天。谢谢你,非常感谢。

5 个答案:

答案 0 :(得分:3)

首先,您必须获得总迭代次数。 count()在这种情况下有所帮助。

<?php
    $counter = 0;
    $total = count($yourArray);

    // ...
      // inside the loop
      $counter++;
      $percentage = $counter/$total;

Live example

0.xx转换为x %留给读者练习。

答案 1 :(得分:1)

要计算百分比,您可以获取当前值并将其除以总计,然后将该值乘以100,然后将其四舍五入。我也采取底价,因此99.7%不会达到100,因为它尚未真正完成。

    for($i=1;$i<=count($yourArray);$i++) {
      $percentage = floor(round( (($i / total) * 100), 1 ));
    }

答案 2 :(得分:0)

将数组的总长度存储在变量中,并使用它来计算百分比。请注意您使用$为变量添加前缀。此外,您可能希望更恰当地命名变量 - 数组不是键。

$counter = 0;
$length  = count($array);

foreach ($array as $value) {
    $counter++;
    $percentage = $counter / $length;
}

答案 3 :(得分:0)

你可以用这种方式完成你的要求

$counter = 0;
$length  = count($array);

foreach ($array as $value) {

$counter=$counter+1;
for ($stepvvx = 10; $stepvvx <= 100; $stepvvx=$stepvvx+10)
    {
if ($counter==intval(($length*$stepvvx)/100)){
    echo "<br>$stepvvx %";
}

# do your task here

}

答案 4 :(得分:-1)

你需要这样做($ total / $ iterations)* $ counter,如下代码:

 $counter = 0;
 $total = 100;
 $iterations = count($key);

 foreach($key as value) {
      $counter++;
      $percentage = (($total/$iterations) * $counter)/100;
 }