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

Php 数组中的第一个元素不断被覆盖,不会添加到数组中,php,html,Php,Html,我正在尝试创建一个测验,为了做到这一点,我使用了一个表单,用户将在其中输入信息,一旦他们提交这个表单,它应该将输入添加到一个数组/列表 然后用户应该能够输入信息,该过程将重复。 成品将是一个数组,每个元素对应于给出答案的顺序 - 到目前为止,我已经尝试使用数组\u push()和声明元素,例如:$my\u数组[0]=$input 我目前遇到的问题是,每次提交表单时,$count变量似乎没有增加 相反,它只是将数据存储在第一个元素中,并覆盖以前的元素 我倾向于认为这是submit按钮的发布的问题

我正在尝试创建一个测验,为了做到这一点,我使用了一个表单,用户将在其中输入信息,一旦他们提交这个表单,它应该将输入添加到一个数组/列表

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

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

-

到目前为止,我已经尝试使用数组\u push()和声明元素,例如:$my\u数组[0]=$input

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

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

我倾向于认为这是submit按钮的发布的问题

-

这是我的密码:

<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>






这里的问题关键在于变量值不会在PHP请求中持久化。每次提交表单时,您都会扔掉旧的
$count
$my_array
变量,并使用相同的名称初始化新变量

下面是代码片段的工作版本,它利用PHP变量在请求之间具有持久性信息:







是否希望在每次发布表单时增加
$counter
?它不会覆盖任何内容,因为您没有存储它;您只需打印
$\u POST['INPUT']
中的任何内容。您可以考虑将其存储在cookie或本地存储中,但多次提交/重新加载页面的想法听起来并不好。为什么不能一次显示所有问题?@user7290573如果我通过一个循环同时显示所有问题,那么表单中的“名称”在该循环中都是相同的,因此我无法检索用户输入到每个问题的唯一答案。您的表单中只有一个输入元素,$\u POST中有一个输入变量,所以循环没有意义。Web应用程序是无状态的-变量的值不会在一个请求到另一个请求之间保持不变(每次从浏览器提交表单或单击链接时都会发出新请求)。要在请求之间保留值,您必须使用一些存储,例如文件、数据库甚至会话,每次都检索存储变量的存储。“如果我通过循环一次显示所有问题,则表单中的“名称”在该循环中都是相同的,因此我将无法检索唯一的答案”…true,除非您使用数组语法,例如
…然后
$\u POST[“INPUT”]
将在您提交表单时包含一个数据数组。或者……给每个问题域一个唯一的“名称”属性——你认为在大多数网站中多个域的表单是如何工作的?这是一种剥猫皮的方法。或者您可以在POST中传递值。变量的范围确实是个问题。请记住PHP是一个字符串Kieran。@谢谢,我以后会记住这一点。