为什么不是';t我的嵌套while循环生成所需的输出


Why isn't my nested while loop generating desired output?

最后一个问题没有得到很好的回答,所以我做了更多的阅读,并提出了一个简单的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++;
    }   
    ?>

您永远不会更改在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>';   
}

YOu可以这样做:

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