我有9个进度条。从这样的数组生成:
$progress = "100-30-0-0-0-0-0-0-0";
$array= explode("-", $progress );
我需要以不同的速度更新进度条。这就是我现在的做法:
if($array[0] >= 100){ $array[0] = 100; }else{ $array[0] = $array[0] + rand(3,8); }
if($array[0] >= 75){if($array[1] >= 100 ){ $array[1] = 100; }else{ $array[1] = $array[1] + rand(2,7); }}
if($array[1] >= 75){if($array[2] >= 100 ){ $array[2] = 100; }else{ $array[2] = $array[2] + rand(2,5); }}
if($array[2] >= 75){if($array[3] >= 100 ){ $array[3] = 100; }else{ $array[3] = $array[3] + rand(1,4); }}
if($array[3] >= 75){if($array[4] >= 100 ){ $array[4] = 100; }else{ $array[4] = $array[4] + rand(1,3); }}
if($array[4] >= 75){if($array[5] >= 100 ){ $array[5] = 100; }else{ $array[5] = $array[5] + rand(1,3); }}
if($array[5] >= 75){if($array[6] >= 100 ){ $array[6] = 100; }else{ $array[6] = $array[6] + rand(1,2); }}
if($array[6] >= 75){if($array[7] >= 100 ){ $array[7] = 100; }else{ $array[7] = $array[7] + rand(0,2); }}
if($array[7] >= 75){if($array[8] >= 100 ){ $array[8] = 100; }else{ $array[8] = $array[8] + rand(0,1); }}
if($array[0] > 100 ){ $array[0] = 100;}
if($array[1] > 100 ){ $array[1] = 100;}
if($array[2] > 100 ){ $array[2] = 100;}
if($array[3] > 100 ){ $array[3] = 100;}
if($array[4] > 100 ){ $array[4] = 100;}
if($array[5] > 100 ){ $array[5] = 100;}
if($array[6] > 100 ){ $array[6] = 100;}
if($array[7] > 100 ){ $array[7] = 100;}
if($array[8] > 100 ){ $array[8] = 100;}
$progress = implode("-", $array);
这会在下一个进度条开始增加之前将第一个进度条更新为75%,3到8%,速度越来越慢。
现在我需要一个循环来以这种方式更新无穷无尽的进度条。
答案 0 :(得分:4)
如果声明你使用的方式太多了,整个过程都是手动的。你应该在循环中这样做。
这是一个使用rand参数的例子(它们是如何生成的?我刚刚对你的那些进行了硬编码,如果超过9,则默认为rand(0,1)。
这会循环显示进度值,如果小于100,则应用随机添加,从不超过100,然后中断。
我还有一个用于测试的链接。
<?php
$progress = isset($_GET['progress'])?$_GET['progress']:"0-0-0-0-0-0-0-0-0";
$array= explode("-", $progress );
$randArgs = array(
array(3,8),
array(2,7),
array(2,5),
array(1,4),
array(1,3),
array(1,3),
array(1,2),
array(0,2),
array(0,1),
);
foreach($array as $key => $progressbar) {
if ($progressbar < 100) {
$limits = isset($randArgs[$key]) ? $randArgs[$key] : array(0,1);
$nextValue = $progressbar + rand($limits[0], $limits[1]);
$array[$key] = $nextValue > 100 ? 100 : $nextValue;
break;
}
}
$progress = implode("-", $array);
var_dump($progress);
?>
<a href="?progress=<?php echo $progress?>">Next</a>