【问题标题】:PHP if is a multiple of an integerPHP if 是整数的倍数
【发布时间】:2012-07-10 05:43:43
【问题描述】:

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

例如,我可以做的是:

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

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

【问题讨论】:

  • 为什么要和字符串比较? 0?

标签: php if-statement for-loop


【解决方案1】:

使用the modulus operator

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

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

如果您也想匹配 0(因为您在示例中使用了它,但它与您的描述不匹配),那么您必须使用 || 对其进行特殊处理。

【讨论】:

  • 你为什么会选择它而不是比较运算符?我真诚地怀疑它会更快,而且使用非逻辑而不是普通逻辑肯定会更加混乱。
【解决方案2】:

您想为此使用模数:

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

祝你好运

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

【讨论】:

    【解决方案3】:
    if ( $i==0 || ($i+1)%3 == 0 )
    {
        //do stuff
    }
    

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

    【讨论】:

    • 0 不满足能被 3 减一整除的数的条件。但是如果需要添加,那就简单的if ($i == 0 ||...
    • 我刚刚为 0 添加了 $i==0,感谢 Joe 的回答。我会接受答案,但还不能
    • @JoeCortopassi 我知道,0 不满足您的模数条件。但是从问题来看,很明显,您的条件也应该包括这种情况。
    【解决方案4】:
    if(($i+1)%3 == 0){
        //do something
    }
    

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

    【讨论】:

      【解决方案5】:

      最优雅的方法就是这样

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

      因为它不会向 $i 值添加任何内容,但所有答案基本上都是正确的!

      【讨论】:

      • 我想这是用来创建包含三列的图像布局,如果是这样,请记住,如果您的网站在不同的屏幕上查看,图像可能会出现不同的显示,您不应该这样做由于多屏问题,使用 PHP 进行布局决策。 JavaScript/CSS 将是最好的安排你的内容。
      猜你喜欢
      • 1970-01-01
      • 2020-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多