2011-02-17 59 views
1

我有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

有什麼背景? – yoda 2011-02-17 04:19:00

回答

4

您使用的方式太多,如果語句,使整個手冊。你應該循環做。

下面是一個例子,使用你的參數蘭特(它們是如何產生的?我只是你的硬編碼的,並且默認爲蘭特(0,1),如果超過9

這遍歷進度值,如果一個小於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>