Matriz de elementos HTML, nombre="algo[]" o nombre="algo"?
Vi algo en este sitio:
Manejo de una variedad de elementos de formulario HTML en JavaScript y PHP http://www.ajaxprojects.com/ajax/tutorialdetails.php?itemid=343
Decía poner la matriz en la name
propiedad y cómo obtener el valor de la colección de entrada. Por ejemplo,name="education[]"
Pero, como sé, un elemento de entrada HTML está listo para la matriz mediante name
. Del lado del cliente ( GetElementsByName
) o del lado del servidor ( $_POST
en PHP o Request.Form
en ASP.NET).
Por ejemplo: name="education"
, entonces, ¿cuál es la diferencia con o sin []
?
PHP usa la sintaxis de corchetes para convertir las entradas del formulario en una matriz, por lo que cuando la use name="education[]"
obtendrá una matriz cuando haga esto:
$educationValues = $_POST['education']; // Returns an array
print_r($educationValues); // Shows you all the values in the array
Así por ejemplo:
<p><label>Please enter your most recent education<br>
<input type="text" name="education[]">
</p>
<p><label>Please enter any previous education<br>
<input type="text" name="education[]">
</p>
<p><label>Please enter any previous education<br>
<input type="text" name="education[]">
</p>
Le dará todos los valores ingresados dentro de la $_POST['education']
matriz.
En JavaScript, es más eficiente obtener el elemento por id...
document.getElementById("education1");
La identificación no tiene que coincidir con el nombre:
<p><label>Please enter your most recent education<br>
<input type="text" name="education[]" id="education1">
</p>
Es diferente.
Si publicas este formulario:
<input type="text" name="education[]" value="1">
<input type="text" name="education[]" value="2">
<input type="text" name="education[]" value="3">
Obtendrá una matriz en PHP. En este ejemplo obtendrás $_POST['education'] = [1, 2, 3]
.
Si publica este formulario sin []
,
<input type="text" name="education" value="1">
<input type="text" name="education" value="2">
<input type="text" name="education" value="3">
Obtendrás el último valor. Aquí obtendrás $_POST['education'] = 3
.