我想打印从1
到user_input_limit
的值。但每4个值之后。应该有1个断行,为此我使用下面的代码,这是行不通的。它在第二次交互中重复+1
的值。
我的代码: -
if(is_numeric($_GET['num'])) {
$num = ceil($_GET['num']/4);
for($i=1;$i<=$num;$i++) {
echo '<div class="hello">';
for($j=$i;$j<=$i+3;$j++) {
echo $j.", ";
}
echo '</div>';
echo '<br />';
}
}
这适用于第一行,但在下一行中,j
变为2
,这不是我需要的,我希望它是5
。如下所示
我需要什么: -
User_input
= 11
<div class='hello'>1, 2, 3, 4, </div>
<div class='hello'>5, 6, 7, 8, </div>
<div class='hello'>9, 10, 11, </div>
我的内部循环错误,我得到的输出如下: -
我得到的是什么: -
1, 2, 3, 4,
2, 3, 4, 5,
3, 4, 5, 6,
任何人都可以修复我的算法。
由于
答案 0 :(得分:4)
不要使用内循环。
if(is_numeric($_GET['num'])) {
for($i=1;$i<=$_GET['num'];$i++) {
if ($i % 4 == 1) {
echo '<div class="hello">';
}
echo $i.", ";
if ($i % 4 == 0 || $i == $_GET['num']) {
echo '</div>';
}
}
}
修改强>
如果您想知道是否可以使用嵌套循环,这里有一个可能的解决方案:
if(is_numeric($_GET['num'])) {
for($i=0;$i<ceil($_GET['num']/4);$i++) {
echo '<div class="hello">';
for($j=$i*4+1;$j<=$i*4+4 && $j <= $_GET['num'];$j++) {
echo $j.", ";
}
echo '</div>';
}
}
你可以注意到,这很难看:)。
答案 1 :(得分:1)
对于分组字符串是:
if(is_numeric($_GET['num'])) {
echo '<div class="hello">';
for($i=1;$i<=$_GET['num'];$i++) {
echo $i . ($i < $_GET['num'] ? ', ' : '');
if ($i % 4 == 0) {
echo '</div>' . ($i < $_GET['num'] ? '<div class="hello">' : '');
}
}
echo $_GET['num'] % 4 ? '</div>' : '';
}
答案 2 :(得分:0)
为什么不
if(is_numeric($_GET['num'])) {
$num = intval($_GET['num']);
for($i=1;$i<=$num;$i++) {
echo "$i, ";
if(!($i%4)) echo '<br />';
}
}