PHP for 循环对每第二个和第三个项目做一些不同的事情

PHP for loop do something different to every second and third item

我正在使用 for 循环以三乘 X 模式创建项目网格。每列项目都需要具有不同的属性,但我正在努力寻找一个解决方案来准确 select 正确的项目。目前我一直在尝试使用 Mod %.

我正在努力实现的一个例子:

[Red] [Blue] [Green]
[Red] [Blue] [Green]
[Red] [Blue] [Green]
[Red] [Blue] [Green] etc

我一直在使用 switch 来尝试实现这一点:

for($i = 1; $i <= 20; $i++) {
    switch($i) {
        case ($i % 3 == 0): 
          /* Do column three*/
          break;
        case ($i % 2 == 0): 
          /* Do column two*/
          break;
        Default: 
          /* Do column one*/
          break;
    }
}

问题是每一列每次都不是相同数字的倍数,我不想尝试为每种可能性都包含一个案例。

有没有办法简单地实现这一点?

您正在使用 switch 而您应该使用 if。两者不是 100% 可以互换的。

特别是,您在 $i 上的开关永远不会真正等于 case 子句中的布尔 (true/false) 条件。更一般地说,动态 case 子句通常表明您无论如何都应该使用 ifswitch 用于根据 常量 选项(一组特定的已知可能值)检查动态值。

就用一个if把逻辑表达清楚:

for($i = 1; $i <= 20; $i++) {
    if ($i % 3 == 0) {
      /* Do column three*/
    } else if ($i % 2 == 0) {
      /* Do column two*/
    } else {
      /* Do column one*/
    }
}