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
子句通常表明您无论如何都应该使用 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*/
}
}
我正在使用 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
子句通常表明您无论如何都应该使用 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*/
}
}