数组中的第一个元素不断被覆盖,不会添加到数组中

时间:2019-10-10 21:54:07

标签: php html

我正在尝试创建一个测验,为此,我正在使用表格,一旦用户提交表格,用户就会向其中输入信息,则应将输入添加到数组/列表

然后用户应该能够输入信息,并且该过程将重复。

最终产品将是一个数组,每个元素对应于给出答案的顺序。

-

到目前为止,我已经尝试过同时使用 array_push()和声明元素,例如:$ my_array [0] = $ input;。

我目前遇到的问题是,每次提交表单时, $ count 变量似乎都不会增加。

相反,它只是简单地将数据存储在第一个元素中,并覆盖以前的数据。

我倾向于认为这与提交按钮的发布有关。

-

这是我的代码:

<html>
    <body>
        <form action="" method="POST">

            <input type="text" name="INPUT" placeholder="Input something"; required /><br><br>

            <input type="submit" name="Submit" /><br><br>

<?PHP 
    $my_array = array();

    $count = 0;

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

        global $count;
        $input = $_POST['INPUT'];

        $my_array[$count] = $input;

        print_r($my_array);
        echo "Count:" . $count;

        $count++;
    }

?>  
        </form>
    </body>         
</html>

1 个答案:

答案 0 :(得分:2)

问题的症结在于变量值不会在PHP请求中持久存在。每次提交表单时,您都会丢弃旧的$count$my_array变量,并使用相同的名称初始化新变量。

这是您的代码段的有效版本,它利用PHP $_SESSION变量在请求之间提供持久性信息:

<?php
session_start();
if (!isset($_SESSION["my_array"])) {
    $_SESSION["my_array"] = array();
}
?>

<html>
    <body>
        <form action="" method="POST">
            <input type="text" name="INPUT" placeholder="Input something"; required /><br><br>
            <input type="submit" name="Submit" /><br><br>

            <?php
                if(isset($_POST['Submit'])){
                    array_push($_SESSION["my_array"], $_POST['INPUT']);

                    print_r($_SESSION["my_array"]);
                    echo "Count:" . count($_SESSION["my_array"]);
                }
            ?>
        </form>
    </body>         
</html>