【问题标题】:update multiple keys in array representing progressbars in different speeds以不同的速度更新表示进度条的数组中的多个键
【发布时间】:2011-02-17 04:14:24
【问题描述】:

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

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

【问题讨论】:

    标签: php arrays loops arraylist


    【解决方案1】:

    你使用了太多的 if 语句,使整个事情变得手动。您应该循环执行。

    这是一个示例,它使用您的 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-16
      • 2017-07-05
      • 1970-01-01
      • 1970-01-01
      • 2020-11-05
      • 2015-01-24
      • 2023-03-28
      • 1970-01-01
      相关资源
      最近更新 更多