PHP使用while和嵌套for循环错误地循环输出

PHP使用while和嵌套for循环错误地循环输出,php,Php,正在尝试基于输入生成表列和行。对于较小的数字,它似乎可以正常工作,例如输入2行和3列。但是当为行输入稍大的数字(如5)时,将输出不正确的行数,有时会无限循环 if(isset($_POST['submit'])) { $rows = (int)$_POST['row_num']; $cols = (int)$_POST['col_num']; $n = 1; $e = 0; echo '<table id="">'; while(

正在尝试基于输入生成表列和行。对于较小的数字,它似乎可以正常工作,例如输入2行和3列。但是当为行输入稍大的数字(如5)时,将输出不正确的行数,有时会无限循环

if(isset($_POST['submit'])) {

    $rows = (int)$_POST['row_num'];
    $cols = (int)$_POST['col_num'];
    $n = 1;
    $e = 0;

    echo '<table id="">';

    while(($e < $rows) && ($e < $cols)) {

        for($i = 0; $i < $rows; $i++) {
            echo '<tr>';

            for($i = 0; $i < $cols; $i++) {
                echo '<td><input type="text" name="field_' . $n . '"></td>';
                $n++;
            }

            echo '</tr>';
        }

        $e++;
    }

    echo '</table>';
}
if(isset($\u POST['submit'])){
$rows=(int)$\u POST['row\u num'];
$cols=(int)$\u POST['col\u num'];
$n=1;
$e=0;
回声';
而($e<$rows)和($e<$cols)){
对于($i=0;$i<$rows;$i++){
回声';
对于($i=0;$i<$cols;$i++){
回声';
$n++;
}
回声';
}
$e++;
}
回声';
}

范围变量
$i
此处出现问题:

for($i = 0; $i < $rows; $i++) {
    echo '<tr>';

    for($i = 0; $i < $cols; $i++) {
        echo '<td><input type="text" name="field_' . $n . '"></td>';
        $n++;
    } 
}
($i=0;$i<$rows;$i++)的
{
回声';
对于($i=0;$i<$cols;$i++){
回声';
$n++;
} 
}
我猜第二个条件将$i更改为$j:

for($i = 0; $i < $rows; $i++) {
    echo '<tr>';

    for($j = 0; $j < $cols; $j++) {
        echo '<td><input type="text" name="field_' . $n . '"></td>';
        $n++;
    } 
}
($i=0;$i<$rows;$i++)的
{
回声';
对于($j=0;$j<$cols;$j++){
回声';
$n++;
} 
}

范围变量
$i
此处出现问题:

for($i = 0; $i < $rows; $i++) {
    echo '<tr>';

    for($i = 0; $i < $cols; $i++) {
        echo '<td><input type="text" name="field_' . $n . '"></td>';
        $n++;
    } 
}
($i=0;$i<$rows;$i++)的
{
回声';
对于($i=0;$i<$cols;$i++){
回声';
$n++;
} 
}
我猜第二个条件将$i更改为$j:

for($i = 0; $i < $rows; $i++) {
    echo '<tr>';

    for($j = 0; $j < $cols; $j++) {
        echo '<td><input type="text" name="field_' . $n . '"></td>';
        $n++;
    } 
}
($i=0;$i<$rows;$i++)的
{
回声';
对于($j=0;$j<$cols;$j++){
回声';
$n++;
} 
}

范围变量
$i
此处出现问题:

for($i = 0; $i < $rows; $i++) {
    echo '<tr>';

    for($i = 0; $i < $cols; $i++) {
        echo '<td><input type="text" name="field_' . $n . '"></td>';
        $n++;
    } 
}
($i=0;$i<$rows;$i++)的
{
回声';
对于($i=0;$i<$cols;$i++){
回声';
$n++;
} 
}
我猜第二个条件将$i更改为$j:

for($i = 0; $i < $rows; $i++) {
    echo '<tr>';

    for($j = 0; $j < $cols; $j++) {
        echo '<td><input type="text" name="field_' . $n . '"></td>';
        $n++;
    } 
}
($i=0;$i<$rows;$i++)的
{
回声';
对于($j=0;$j<$cols;$j++){
回声';
$n++;
} 
}

范围变量
$i
此处出现问题:

for($i = 0; $i < $rows; $i++) {
    echo '<tr>';

    for($i = 0; $i < $cols; $i++) {
        echo '<td><input type="text" name="field_' . $n . '"></td>';
        $n++;
    } 
}
($i=0;$i<$rows;$i++)的
{
回声';
对于($i=0;$i<$cols;$i++){
回声';
$n++;
} 
}
我猜第二个条件将$i更改为$j:

for($i = 0; $i < $rows; $i++) {
    echo '<tr>';

    for($j = 0; $j < $cols; $j++) {
        echo '<td><input type="text" name="field_' . $n . '"></td>';
        $n++;
    } 
}
($i=0;$i<$rows;$i++)的
{
回声';
对于($j=0;$j<$cols;$j++){
回声';
$n++;
} 
}

首先,您不需要While循环,它毫无意义,可能会导致问题

其次,您对行和列都使用了
$i
,不能对这两个行使用相同的变量。一个使用
$i
,另一个使用
$j
。这应该起作用:

if(isset($_POST['submit'])) {

    $rows = (int)$_POST['row_num'];
    $cols = (int)$_POST['col_num'];
    $n = 1;

    echo '<table id="">';

    for($i = 0; $i < $rows; $i++) {
        echo '<tr>';

        for($j = 0; $j < $cols; $j++) {
            echo '<td><input type="text" name="field_' . $n++ . '"></td>';
        }

        echo '</tr>';
    }

    echo '</table>';
}
if(isset($\u POST['submit'])){
$rows=(int)$\u POST['row\u num'];
$cols=(int)$\u POST['col\u num'];
$n=1;
回声';
对于($i=0;$i<$rows;$i++){
回声';
对于($j=0;$j<$cols;$j++){
回声';
}
回声';
}
回声';
}

首先,您不需要While循环,它毫无意义,可能会导致问题

其次,您对行和列都使用了
$i
,不能对这两个行使用相同的变量。一个使用
$i
,另一个使用
$j
。这应该起作用:

if(isset($_POST['submit'])) {

    $rows = (int)$_POST['row_num'];
    $cols = (int)$_POST['col_num'];
    $n = 1;

    echo '<table id="">';

    for($i = 0; $i < $rows; $i++) {
        echo '<tr>';

        for($j = 0; $j < $cols; $j++) {
            echo '<td><input type="text" name="field_' . $n++ . '"></td>';
        }

        echo '</tr>';
    }

    echo '</table>';
}
if(isset($\u POST['submit'])){
$rows=(int)$\u POST['row\u num'];
$cols=(int)$\u POST['col\u num'];
$n=1;
回声';
对于($i=0;$i<$rows;$i++){
回声';
对于($j=0;$j<$cols;$j++){
回声';
}
回声';
}
回声';
}

首先,您不需要While循环,它毫无意义,可能会导致问题

其次,您对行和列都使用了
$i
,不能对这两个行使用相同的变量。一个使用
$i
,另一个使用
$j
。这应该起作用:

if(isset($_POST['submit'])) {

    $rows = (int)$_POST['row_num'];
    $cols = (int)$_POST['col_num'];
    $n = 1;

    echo '<table id="">';

    for($i = 0; $i < $rows; $i++) {
        echo '<tr>';

        for($j = 0; $j < $cols; $j++) {
            echo '<td><input type="text" name="field_' . $n++ . '"></td>';
        }

        echo '</tr>';
    }

    echo '</table>';
}
if(isset($\u POST['submit'])){
$rows=(int)$\u POST['row\u num'];
$cols=(int)$\u POST['col\u num'];
$n=1;
回声';
对于($i=0;$i<$rows;$i++){
回声';
对于($j=0;$j<$cols;$j++){
回声';
}
回声';
}
回声';
}

首先,您不需要While循环,它毫无意义,可能会导致问题

其次,您对行和列都使用了
$i
,不能对这两个行使用相同的变量。一个使用
$i
,另一个使用
$j
。这应该起作用:

if(isset($_POST['submit'])) {

    $rows = (int)$_POST['row_num'];
    $cols = (int)$_POST['col_num'];
    $n = 1;

    echo '<table id="">';

    for($i = 0; $i < $rows; $i++) {
        echo '<tr>';

        for($j = 0; $j < $cols; $j++) {
            echo '<td><input type="text" name="field_' . $n++ . '"></td>';
        }

        echo '</tr>';
    }

    echo '</table>';
}
if(isset($\u POST['submit'])){
$rows=(int)$\u POST['row\u num'];
$cols=(int)$\u POST['col\u num'];
$n=1;
回声';
对于($i=0;$i<$rows;$i++){
回声';
对于($j=0;$j<$cols;$j++){
回声';
}
回声';
}
回声';
}

为什么要使用while循环?它的目的是什么?两个foreach循环就是您所需要的。为什么要使用while循环?它的目的是什么?两个foreach循环就是您所需要的。为什么要使用while循环?它的目的是什么?两个foreach循环就是您所需要的。为什么要使用while循环?它的目的是什么?这两个foreach循环就是你所需要的。while循环是以前版本的遗留,我忘了取出。谢谢你指出这一点。现在效果很好,谢谢你的帮助!while循环是以前版本的遗留,我忘了取出。谢谢你指出这一点。现在效果很好,谢谢你的帮助!while循环是以前版本的遗留,我忘了取出。谢谢你指出这一点。现在效果很好,谢谢你的帮助!while循环是以前版本的遗留,我忘了取出。谢谢你指出这一点。现在效果很好,谢谢你的帮助!