0

我正在尝试从表单中获取输入,将其添加到数组中,然后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();,但我不知道如何修复它。我环顾四周,但找不到答案。

4

3 回答 3

4

你是对的。每次发布表单时,数组都会重新初始化。您想要做的是将您的数组作为更持久的数据源。

  1. 您可以考虑使用会话和$_SESSION变量.

session_start();
if (!is_array($_SESSION['a'])){
  $_SESSION['a'] = array();
}
$_SESSION['a'][] = $_REQUEST['text'];
  1. 您还可以考虑将此数据写入一个小文本文件,然后您可以在脚本开始时读取该文件。

  2. 另一种选择是将数据写入$_COOKIE.

于 2013-01-19T00:36:05.437 回答
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 注入更多输入

于 2013-01-19T00:35:36.647 回答
0

您没有替换任何东西,您正在做的是将 的值添加$_REQUEST['text']到之前为空的数组中。

于 2013-01-19T00:36:00.373 回答