为什么我的嵌套while循环生成所需的输出?

时间:2016-04-12 20:40:59

标签: php

最后一个问题没有收到,所以我做了更多的阅读,想出了一个简单的php程序,接受用户输入的行数和列数。使用嵌套的while循环生成一个表,我确实理解了' For'循环更适合这个并让它使用一个。努力学习并变得更好,所以我也想弄清楚这一点。我只获得一行而没有列。我还希望迭代生成看起来像示例的行和列。有点沮丧的for循环更容易终于搞清楚。

W,row1,col1; W,row1,col2; W,row1,col3
W,row2,col1; W,row2,col2; W,row2,col3 etc...

php代码:

<?php

if(isset($_GET['rows'])) { 



$r = 1;
$c = 1;
$rows = 5;
$cols = 6;
while ($r <= $rows) {
        echo '<tr>';
        while($c <= $cols) {
            echo '<td>W, '.'row' .$r.',col'.$c.';</td>';
            $c++;
        }
        echo '</tr>';
        $r++;
    }   

    ?>

2 个答案:

答案 0 :(得分:1)

你永远不会改变你在while条件下测试的变量,所以循环是无限的。您需要每次都减少变量。

你需要在每个内循环之前重新初始化$cols。否则,在外循环的第一次迭代之后,已经满足结束条件。

$count = 1;
$rows = $_REQUEST['rows'];

//while loop to create table

while ($rows-- >= 1) {
    echo '<tr>';
    $cols = $_REQUEST['cols'];
    while ($cols-- >= 1) {
        echo '<td>W,row1,col1;</td>';
        $count++
    }
    echo '</tr>';   
}

答案 1 :(得分:-1)

你可以这样做:

if(isset($_GET['rows'])) { 

//Create counters

    $count = 1;
    $rows = $_REQUEST['rows'];
    $cols = $_REQUEST['cols'];

    //for loop to create table

    for($i=1;$i<=$rows;$i++){
        echo '<tr>';
        for($j=1;$j<=$cols;$j++){
            echo '<td>W,'.'row'.$i.',col'.$j.';</td>';        
        }
        echo '</tr>';
    }
}