Matriz de elementos HTML, nombre="algo[]" o nombre="algo"?

Resuelto Cheung asked hace 54 años • 3 respuestas

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 namepropiedad 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 ( $_POSTen PHP o Request.Formen ASP.NET).

Por ejemplo: name="education", entonces, ¿cuál es la diferencia con o sin []?

Cheung avatar Jan 01 '70 08:01 Cheung
Aceptado

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>
Fenton avatar Jan 14 '2011 08:01 Fenton

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.

Galley avatar Mar 23 '2017 07:03 Galley