我正在尝试创建一个测验,为此,我正在使用表格,一旦用户提交此表格,用户就会向其中输入信息,则应将输入添加到数组/列表。
然后用户应该能够输入信息,并且该过程将重复。
最终产品将是一个数组,每个元素对应于给出答案的顺序。
-
到目前为止,我已经尝试过同时使用 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>
答案 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>