2009-11-12 14 views
11

私は多次元配列をどのように投稿できるのか知りたいですか?多次元配列投稿フォーム

基本的に私はユーザーを選択したいと思っており、選択されたユーザーには送信する電子メールと名前が付いています。

100人のユーザーを選択すると、メールと名前が付きます。私は次のようにPHPに入ってみたい

$_POST['users'] = array(
    array(name, email), 
    array(name2, email2), 
    array(name3, email3) 
); 

アイデアはありますか?

+0

関連:http://stackoverflow.com/questions/1548159/php-how-to-send-an-array-to-another-page/1548193#1548193 – cregox

答えて

30

あなたはこのようなあなたのフォーム要素に名前を付けることができます。

<input name="users[1][name]" /> 
<input name="users[1][email]" /> 
<input name="users[2][name]" /> 
<input name="users[2][email]" /> 
... 

あなたがアイデアを得る...

+2

ユーザーについて[] [名前]はどうですかid(1、2 ..)を設定する必要がありますか? – Basit

+3

Nope。あなたは 'users []'と一緒に行くことができます。 – Franz

+0

ユーザー数があらかじめ定義されていない場合、つまりユーザーが+ボタンをクリックして新しいフィールドセットが開き、実際にユーザーを追加しないとした場合はどうですか? – Pila

2

さて、あなたはいくつかは、どこかでループしなければならないとしています。インデックスを持つ各フォーム要素に名前を付けると(Franzが示唆するように)、PHP側でループします。

Javascriptを使用してループを実行する場合は、フォームにonSubmit()を設定してPHPに渡すJSON文字列を作成します。そして、PHPはそうのようにそれを取得しています

json_decode($_POST['users'], true); 

第二引数ではなく、匿名オブジェクトの配列を作るためにそれを伝えます。

+0

これは簡単な方法です。 – lovespring

7

Hereの別の方法:serialize配列、ポスト、およびunserialize(オプションの暗号化)。

"send.php ":

<input type="hidden" name="var_array" value="<?php echo base64_encode(serialize($var_array)); ?>"> 

" receive.php":

そしてここでは、私のために働いた例だということで

if (isset($_POST['var_array'])) $var_array = unserialize(base64_decode($_POST['var_array'])); 

ます2つのファイル/セッションの間で共有されているかのように$var_arrayを使用することができます。もちろん、このsend.php<form>が必要ですが、クエリ文字列として<a>に送信することもできます。

この方法は、多次元配列を扱う際に大きな利点があります。

+0

恐ろしい解決策。魅力のように動作します。ありがとう。 – denislexic

+0

@denislexic私は本当に誰かがそれを楽しんでうれしいです! :) – cregox

+0

そして単に最高のソリューション。ありがとうございました :) – Zl3n