PHP for循环对第二项和第三项执行不同的操作



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

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

[红][蓝][绿]
[红][蓝][绿]
[红][蓝][绿色]
[红][蓝色][绿色]等

我一直在使用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*/
}
}

最新更新