卡住循环,步骤和打开/关闭标签

时间:2012-12-21 19:33:19

标签: php loops

$step=3;
for($i=0;$i<100;$i++){
    if($i/$step===(int)($i/$step)){
        echo 'START:';
    }
    echo $i,'-';
    if($i>0 and $i/$step===(int)($i/$step)){
        echo ':END<BR>';
    }
}

我需要这样的结果

START:0-1-2-:END
START:3-4-5-:END
START:6-7-8-:END
....

等等,但无法弄清楚如何设法实现它。

3 个答案:

答案 0 :(得分:7)

只是为了演示数组函数的强大功能:

$numbers = range(0, 100);
$chunks = array_chunk($numbers, 3);
foreach($chunks as $chunk) {
  echo 'START:', implode('-', $chunk), '-:END<BR>';
}

答案 1 :(得分:5)

$step = 3;
for($i = 0 ; $i < 100; $i++){
    if($i % $step == 0){
        echo "START:";
    }
    echo $i."-";
    if(($i + 1) % $step == 0){
        echo ":END<br />";
    }
}

答案 2 :(得分:2)

您可以使用模运算符。它基本上返回你剩余的分裂。例如,当$ i变为20时,在这种情况下其模数将为2(20/3 = 18),其余为2。当$ i变为21时,没有任何东西可以保留,因为它完美地除以3,因此21%3的结果为0.这样你就可以每隔三次找到一次执行某些东西。

试试这个:

$step=3;

echo 'START:';

for($i=0;$i<100;$i++){

    if(!($i%$step) and $i>0){
         echo ':END<BR>START:';
    }
    echo $i,'-';
}

echo ':END<BR>';