我正在尝试从表单中获取输入,将其添加到数组中,并将该数组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();
)上重新分配,但我不确定如何修复它。我环顾四周,但找不到答案。
答案 0 :(得分:4)
你是对的。每次发布表单时,数组都会重新初始化。您要做的是将您的数组作为更持久的数据源。
$_SESSION
variable。
session_start();
if (!is_array($_SESSION['a'])){
$_SESSION['a'] = array();
}
$_SESSION['a'][] = $_REQUEST['text'];
另一种选择是write the data to a $_COOKIE
。
答案 1 :(得分:0)
您正在混合客户端和服务器执行...
如果你想要一个文本数组,你应该使用这样的东西:
<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注入更多输入
答案 2 :(得分:0)
你没有替换任何东西,你正在做的是将$_REQUEST['text']
的值添加到数组中,之前是空的。