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);
    }
?>

私の理論の 1 つは$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 に答える