0
$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
....

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

4

3 回答 3

7

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

$numbers = range(0, 100);
$chunks = array_chunk($numbers, 3);
foreach($chunks as $chunk) {
  echo 'START:', implode('-', $chunk), '-:END<BR>';
}
于 2012-12-21T19:41:23.967 回答
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 />";
    }
}
于 2012-12-21T19:38:07.850 回答
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>';
于 2012-12-21T19:37:01.887 回答