2

我想从 to 打印1user_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它。像下面25

我需要什么:- 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>

我的内部 for 循环是错误的,我得到的输出如下:-

我得到了什么:-

1,  2,  3,  4, 
2,  3,  4,  5, 
3,  4,  5,  6, 

任何人都可以修复我的算法。

谢谢

4

3 回答 3

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>';
    }
}

如您所见,它很丑:)。

于 2013-10-09T16:56:49.953 回答
1

对于 div-ed 字符串是:

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>' : '';
}
于 2013-10-09T17:11:52.710 回答
0

为什么不只是

if(is_numeric($_GET['num'])) {
    $num = intval($_GET['num']);
    for($i=1;$i<=$num;$i++) {
        echo "$i, ";
        if(!($i%4)) echo '<br />';
        }
    }
于 2013-10-09T16:58:16.723 回答