2009-10-16 12 views
11

Tengo una gran forma (para un CMS interno) que está compuesta por varias secciones, algunas de ellas son opcionales, algunas de ellas son obligatorias. Todo está en una forma humilde (tiene que ser así, no ajax, de ninguna otra manera :-()

Dado que de una manera Dilbertesque todo se cambia cada segundo me preguntaba si hay alguna manera simple de agrupar $ datos _POST, quiero decir el envío de la publicación así:

$_POST['form1']['datax']

o para recuperar datos de lado del servidor con facilidad, y por la facilidad con que significaría tener que withouth expressily declarar:

$array1 = array($_POST['datax'],$_POST['datay'],...);

$array2 = array($_POST['dataalpha'],$_POST['dataomega'],...);

ya que hay alrededor de 60 campos.

Espero haber sido capaz de explicar esto bien y como siempre muchas gracias ..

Respuesta

24

Si usted da a sus elementos de entrada nombres de matrices similares, que llegan en la matriz PHP $_POST (o $ _GET) como una matriz:

<input type="text" name="foo[]" value="a"/> 
<input type="text" name="foo[]" value="b" /> 
<input type="text" name="foo[]" value="c" /> 
<input type="text" name="foo[bar]" value="d" /> 
<input type="text" name="foo[baz][]" value="e" /> 
<input type="text" name="foo[baz][]" value="f" /> 

es para:

print_r($_POST) 
foo => array (
    0 => a 
    1 => b 
    2 => c 
    bar => d 
    baz => array(
     0 => e 
     1 => f 
    ) 
) 
+0

Gracias, olvidé completamente esto – 0plus1

+0

¡Nunca supe que podrías hacer esto! ¡Estupendo! – Psytronic

+0

Además, por lo que puedo recordar, puede escribir algo entre corchetes, ¡y se convierte en el índice de esa matriz! – alex

2

Mediante corchetes después del nombre de entrada hará que se pueden agrupar en PHP:

<input name="foo[]" type="text" value="1" /> 
<input name="foo[]" type="text" value="2" /> 

Usted también puede hacer una matriz asociativa:

<input name="foo[bar]" type="text" /> 

Creo matrices multidimensionales también funcionarían, pero no estoy seguro de si realmente lo he intentado.

Editar: Esto es lo mismo answered in the PHP FAQ.

4

Si nombra sus entradas correctamente, puede hacerlo. Ejemplo:

<input type="text" name="textInput[]" /> 
<input type="text" name="textInput[]" /> 

Eso rellenará una matriz en $ _POST named textInput. Es decir:

$_POST['textInput'][0] == "whatever the first was set to be" 
$_POST['textInput'][1] == "whatever the second was set to be" 
1

puede utilizar sus campos de formulario así:

<input type="text" name="form1['datax']"/> 
Cuestiones relacionadas