Esto es lo que descubrí:
El envío de campos de formulario de valores múltiples, es decir, el envío de matrices a través de variables GET / POST, se puede hacer de varias maneras diferentes, ya que un estándar no necesariamente se detalla.
Las tres formas posibles de enviar campos o matrices de valores múltiples serían:
?cars[]=Saab&cars[]=Audi
(La mejor manera: PHP lee esto en una matriz)
?cars=Saab&cars=Audi
(Mala manera: PHP solo registrará el último valor)
?cars=Saab,Audi
(No he probado esto)
Ejemplos de formularios
En un formulario, los campos de valores múltiples pueden tomar la forma de un cuadro de selección establecido en múltiples :
<form>
<select multiple="multiple" name="cars[]">
<option>Volvo</option>
<option>Saab</option>
<option>Mercedes</option>
</select>
</form>
(NOTA: en este caso, sería importante nombrar el control de selección some_name[]
, de modo que los vars de solicitud resultantes se registren como una matriz por PHP)
... o como múltiples campos ocultos con el mismo nombre :
<input type="hidden" name="cars[]" value="Volvo">
<input type="hidden" name="cars[]" value="Saab">
<input type="hidden" name="cars[]" value="Mercedes">
NOTA: El uso field[]
para valores múltiples está realmente mal documentado. No veo ninguna mención al respecto en la sección sobre claves de valores múltiples en Cadena de consulta - Wikipedia , o en los documentos del W3C que tratan con entradas de selección múltiple.
ACTUALIZAR
Como los comentaristas han señalado, esto es muy específico del marco. Algunos ejemplos:
Cadena de consulta:
?list_a=1&list_a=2&list_a=3&list_b[]=1&list_b[]=2&list_b[]=3&list_c=1,2,3
Rieles:
"list_a": "3",
"list_b":[
"1",
"2",
"3"
],
"list_c": "1,2,3"
Angular:
"list_a": [
"1",
"2",
"3"
],
"list_b[]": [
"1",
"2",
"3"
],
"list_c": "1,2,3"
(Angular Discusión )
Ver comentarios para ejemplos en node.js , Wordpress , ASP.net
Mantenimiento del orden:
una cosa más a tener en cuenta es que si necesita mantener el orden de sus elementos (es decir, la matriz como una lista ordenada), realmente solo tiene una opción, que es pasar una lista delimitada de valores y convertirla explícitamente a una matriz tu mismo.