2009-11-12 18 views
11

Ich möchte wissen, wie ich ein mehrdimensionales Array veröffentlichen kann?mehrdimensionale Array-Post aus dem Formular

Grundsätzlich möchte ich einen Benutzer auswählen und ausgewählter Benutzer wird E-Mail-Adresse und Name zu senden haben.

So 100 Benutzer auswählen, wird E-Mail und Name haben. Ich möchte in PHP wie folgt erhalten

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

Irgendwelche Ideen?

+0

verwandt: http://StackOverflow.com/Questions/1548159/PHP-how-to-send-an-array-to-another-page/1548193#1548193 – cregox

Antwort

30

Sie können Ihre Formularelemente wie folgt nennen:

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

Sie erhalten die Idee ...

+2

was ist mit Benutzern [] [Name], tun ich muss die id (1, 2 ..) einstellen? – Basit

+3

Nein. Sie können auch mit 'users []' gehen. – Franz

+0

Was ist mit einer Situation, in der die Anzahl der Benutzer nicht vordefiniert ist, ein Benutzer klickt auf eine + Schaltfläche und eine neue Gruppe von Feldern öffnet und sie können tatsächlich keine Benutzer hinzufügen – Pila

2

Nun, einige Schleifen irgendwo tun gehen zu müssen. Wenn Sie jedes Formularelement mit einem Index benennen (wie Franz es vorschlägt), führen Sie das Schleifen auf der PHP-Seite durch.

Wenn Sie Javascript verwenden möchten, um die Schleife zu machen, haben Sie Ihre Form onSubmit() erstellen Sie eine JSON-Zeichenfolge, um an die PHP übergeben. Dann lassen Sie die PHP es wie folgt abrufen:

Das zweite Argument sagt es Arrays anstelle von anonymen Objekten zu machen.

+0

das ist der einfache Weg, danke! – lovespring

7

Here ist ein anderer Weg: serialize das Array, Post und unserialize (Verschlüsselung optional).

Und hier ist ein Beispiel, das für mich gearbeitet:

"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'])); 

Damit Sie kann einfach $var_array so verwenden, als wäre es zwischen den beiden Dateien/Sitzungen geteilt. Natürlich muss ein <form> in diesem send.php sein, aber Sie könnten es auch auf eine <a> als Abfragezeichenfolge senden.

Diese Methode hat einen großen Vorteil bei der Arbeit mit mehrdimensionalen Arrays.

+0

Super Lösung. Klappt wunderbar. Vielen Dank. – denislexic

+0

@denislexic Ich bin wirklich froh, dass jemand es genossen hat! :) – cregox

+0

Und einfach die beste Lösung. Vielen Dank :) – Zl3n

Verwandte Themen