2013-01-19 43 views
0

我想从窗体中获取输入,将它添加到数组中,并将print_r数组添加到屏幕上。动态添加到PHP中的数组?

我的问题是从表单的输入仅替换第一(只)元件在数组中。我的

<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

你想各岗位之间的累积值?在这种情况下,你将不得不在数据库之间来回发送数组内容(可能作为隐藏的输入元素),或者将数组内容保存在数据库中。每个帖子都会导致服务器以一个完全“空”的php实例开始,它不知道该数组以前是什么。 – DWright

+0

你只是试图让它在屏幕上更新?你打算以后再提交吗?听起来好像你应该在客户端完成这一切(即JavaScript)? – ernie

回答

4

你是对的。数组确实每次发布表单时都会重新初始化。你想要做的是让你的数组作为一个更持久的数据源。

  1. 您可能会考虑使用会话和$_SESSION variable

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

我决定把这些数据写入一个文本文件,它似乎运行良好。我只需要弄清楚如何添加新行,可能是“\ n”或“
”。谢谢! – WillumMaguire

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

+0

我不知道如何处理javascript中的表单...我希望有一个文本框,并且每次按下“提交”文本框的get值时,都会附加到数组中,然后重新回显到屏幕。在JS中有更简单的方法吗? – WillumMaguire

0

不更换任何东西,输入你在做什么是$_REQUEST['text']值添加到阵列中,这在以前是空的。