更新表示不同速度的进度条的数组中的多个键

时间:2011-02-17 04:14:24

标签: php arrays loops arraylist

我有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%,速度越来越慢。

现在我需要一个循环来以这种方式更新无穷无尽的进度条。

1 个答案:

答案 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>