【问题标题】:How to repeat for loop inside for loop with switch PHP如何使用开关 PHP 在 for 循环中重复 for 循环
【发布时间】:2026-02-05 14:00:05
【问题描述】:
如果达到一定数量,我会尝试重复 $i。例如$i <= 4,然后再次启动$i,得到如下结果。
代码:
$let_a_p = '';
for ($i = 1; $i <= 10; $i++) {
switch (true) {
case $i <= 1:
$let_a_p = 'a'.$i;
break;
case $i <= 4:
$i = 1;
$let_a_p = 'b'.$i;
break;
case $i <= 8:
$i = 1;
$let_a_p = 'c'.$i;
break;
}
echo $let_a_p;
}
结果应该是:
a1
a2
a3
c1
c2
c3
c4
d1
d2
d3
(共10个)
【问题讨论】:
标签:
php
string
for-loop
switch-statement
【解决方案1】:
问题是你一直在重置$i,它正在控制循环。相反,您可以调整显示的数字。我也稍微调整了开关条件以简化它...
for ($i = 1; $i <= 10; $i++) {
switch (true) {
case $i < 4:
$let_a_p = 'a'.$i;
break;
case $i < 8:
// $i = 1;
$let_a_p = 'b'.($i-3);
break;
// case $i <= 8:
// $i = 1;
default:
$let_a_p = 'c'.($i-7);
break;
}
echo $let_a_p;
}
【解决方案2】:
另一种更不容易出错的方法是嵌套循环:
// model
$prefixes = ['a','b','c'];
$limits = [ 3 , 4 , 3 ];
// controller
$results = []; // we want an array even if loop does not start at all
$c = min(count($limits) , count($prefixes));
for ($i = 0; $i < $c; $i++)
for ($j = 1; $j <= $limits[$i]; $j++)
$results[] = $prefixes[$i] . $j;
// view
echo '<div>' .implode("</div>\n<div>", $results) . '</div>';
这是更通用的并且遵循 MVC 概念。