我试图通过从HTML输入元素“文本”获取输入来将值插入到数组中。我能够将值插入到数组中,但在数组中插入值后,它将替换索引0处的值,而不是将索引增加到1,依此类推。
我试过使用array_push()函数和简单的$ list [] =“a”;.但两种方式都会产生相同的输出。
<html>
<body>
<form name="f1" action="#" method="POST">
Enter Any No.: <input type="text" name="inpbox">
<br>
<input type="submit" name="add" value="Add">
</form>
<br>
</body>
</html>
<?php
$val = $_POST["inpbox"];
$list=[];
array_push($list,$val);
print_r($list);
?>
实际输出:数组([0] => 5)
插入6,它将导致这个数组([0] => 6)不像预期的输出。
期望输出:数组([0] => 5,[1] => 6)
注意:我们可以插入任何类型的值,如数字(53,5,6)或字符串('aa','f')
要在服务器上存储状态,您需要使用PHP Sessions之类的东西。它们允许存储值,然后可以在后续页面访问中检索这些值。对于您的示例,这样的东西可以工作:
<?php
session_start();
?>
<html>
<body>
<form name="f1" method="POST">
Enter Any No.: <input type="text" name="inpbox">
<br>
<input type="submit" name="add" value="Add">
</form>
<br>
</body>
<?php
if (isset($_POST["inpbox"])) {
$val = $_POST["inpbox"];
// any values stored yet?
if (!isset($_SESSION['list'])) {
// no, create the list
$_SESSION['list'] = array($val);
}
else {
// yes, add this value to the list
$_SESSION['list'][] = $val;
}
print_r($_SESSION['list']);
}
?>
</html>
注意
对session_start
的调用必须在进行任何输出之前进行,因为会话的默认操作模式是使用cookie,并且必须在任何其他输出之前发送用于设置cookie的标头。