2013-01-19 70 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']值添加到陣列中,這在以前是空的。