1

在 for 循环中,我需要添加一些仅在循环位于 [(3 的倍数) 减 1] 时输出的 HTML。

例如,我可以做的是:

for($i=0; $i<count($imagearray); $i++)
{
    if($i=="0" || $i=="2" || $i=="5" || $i=="8" || $i=="11")
    {
        echo 'string';
    }
}

但这对于大的 for 循环来说不是很优雅而且非常无用,有没有合适的方法来做到这一点?

4

5 回答 5

7
if ( $i==0 || ($i+1)%3 == 0 )
{
    //do stuff
}

这样做的目的是转到下一个索引,将其除以 3,然后查看是否有余数。如果没有,则表示当前索引比可被 3 整除的数字小一

于 2012-07-10T17:22:41.593 回答
0

使用模运算符

if (! (($i+1) % 3) ) {

如果$i+1除以 3 没有余数,结果将为零。那么你只需要一个布尔值not

如果您也想匹配 0 (因为您在示例中使用它,但它与您的描述不匹配),那么您必须使用||.

于 2012-07-10T17:22:19.663 回答
0

您想为此使用模数:

(1 % 3) == 1
(2 % 3) == 2
(3 % 3) == 0
(4 % 3) == 1

祝你好运

模数就是说,给我除法的余数。所以 1 / 3 等于 0 余数 1,依此类推。

于 2012-07-10T17:22:33.630 回答
0
if(($i+1)%3 == 0){
    //do something
}

% 运算符称为模运算符,它返回除法的余数。

于 2012-07-10T17:24:55.140 回答
0

最优雅的方法是

if ($i % 3 === 2) {
  //do stuff
}

因为它不会增加$i价值,但所有答案基本上都是正确的!

于 2012-07-10T17:26:31.940 回答