我正试图从表单中获取输入,将其添加到数组中,并将该数组print_r
显示到屏幕。
我的问题是表单的输入只替换数组中的第一个(也是唯一的)元素。
<form action="" method="POST">
<input type="text" name="text" />
<input type="submit" name="sub"/>
</form>
<?php
$a = array();
if( isset($_REQUEST['text']) && !empty($_REQUEST['text'])){
array_push($a, $_REQUEST['text']);
print_r($a);
}
?>
我的一个理论是,$a
不断得到重新分配的第一行PHP代码($a = array();
),但我不知道如何解决它。
你是正确的。数组在每次发送表单时都重新初始化。你需要做的是让你的数组成为一个更持久的数据源。
- 您可以考虑使用会话和
$_SESSION
变量。
session_start();
if (!is_array($_SESSION['a'])){
$_SESSION['a'] = array();
}
$_SESSION['a'][] = $_REQUEST['text'];
您也可以考虑将这些数据写入一个小文本文件,以便在脚本开始时读取。
另一种选择是将数据写入
$_COOKIE
。
您正在混合执行客户端和服务器…
如果你想要一个文本数组,你应该这样做:
<form action="" method="POST">
<input type="text" name="text[]" />
<input type="text" name="text[]" />
<input type="text" name="text[]" />
<input type="submit" name="sub"/>
</form>
如果你想添加更多的文本,你应该注入更多的输入javascript
您没有替换任何东西,您正在做的是将$_REQUEST['text']
的值添加到数组中,该数组之前为空。