我正在使用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
子句通常指示您无论如何都应该使用if
。switch
用于根据常量选项(一组特定的已知可能值(检查动态值。
只需使用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*/
}
}