在PHP中动态添加到数组?

时间:2013-01-19 00:33:06

标签: php html arrays forms input

我正在尝试从表单中获取输入,将其添加到数组中,并将该数组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();)上重新分配,但我不确定如何修复它。我环顾四周,但找不到答案。

3 个答案:

答案 0 :(得分:4)

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

  1. 您可以考虑使用会话和$_SESSION variable
  2. session_start();
    if (!is_array($_SESSION['a'])){
      $_SESSION['a'] = array();
    }
    $_SESSION['a'][] = $_REQUEST['text'];
    
    1. 您可能还会将writing这些数据视为一个小文本文件,然后您可以在脚本开头read

    2. 另一种选择是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']的值添加到数组中,之前是空的。