通过html表单创建的PHP数组只存储最后一个元素


PHP array created through html form only stores last element

我用$I的不同数值为用户循环一个问题。他们会在html表单中输入一个数量,这个数量也会循环。当他们点击提交时,我希望有一个数组(从[0]开始的键排列形式)来存储他们对问题的每个特定变体的响应。然而,在我编写的代码中,我只设法用键[0]存储他们的最后一个输入,就好像它是数组的第一个元素一样。当我调用print_r时,以前的所有答案似乎都丢失了。请,如果有人能指出为什么会发生这种情况,或者我如何解决它,我将不胜感激。

<?php
    for ($i=2; $i<=10; $i++) 
    {
        print "question $i";
        echo"<form action='"mysqlranked.php'" method='"post'">
          <input type='"text'" name='"pools[]'" value='"0'" maxlength='"2'" size='"2'">
          </form>
          <br>";
    }
    print "
    <form>
    <input type='"submit'" name='"formSubmit'" value='"Submit'">
    </form>";
    if (isset($_POST["formSubmit"]))
    {
        $var = $_POST["pools"];
    }
    print_r($var);
?>

您的每个输入都在一个新表单中,提交按钮也在自己的表单中。我帮你搞定了:

<?php
    echo "<form action='"mysqlranked.php'" method='"post'">";
    for ($i=2; $i<=10; $i++) 
    {
        print "question $i";
        echo"
          <input type='"text'" name='"pools[]'" value='"0'" maxlength='"2'" size='"2'">
          <br>";
    }
    print "
    <input type='"submit'" name='"formSubmit'" value='"Submit'">
    ";
    echo "</form>";
    if (isset($_POST["formSubmit"]))
    {
        $var = $_POST["pools"];
    }
    print_r($var);
?>

如果有效,请告诉我。

您不应该为每个问题都有一个新的form标记。

试试下面的代码:

<form action="mysqlranked.php" method="post">
<?php
    for ($i = 2; $i <= 10; $i++)
    {
        print "question $i";
?>
    <input type="text" name="pools[]" value="0" maxlength="2" size="2">
<?php
    }
?>
    <input type="submit" name="formSubmit" value="Submit">
</form>
<?php
    if (isset($_POST["formSubmit"]))
    {
        $var = $_POST["pools"];
    }
    print_r($var);
?>
    <?php
        for ($i=2; $i<=10; $i++) 
        {
            print "question $i";
            echo"<form action='"mysqlranked.php'" method='"post'">
              <input type='"text'" name='"pools[]'" value='"0'" maxlength='"2'" size='"2'">
              <br>";
        }
        print "
        <input type='"submit'" name='"formSubmit'" value='"Submit'">
        </form>";
     if (isset($_POST["formSubmit"])) 
        {
                for($counter=0;$counter<count($_POST["pools"]);$counter++)
                {
                    $var = $_POST['pools'][$counter]
                }
         }
print_r($var);
    ?>

您可以使用array_push($arrayName, $elementToBePushed);