Ecco cosa ho capito:
L'invio di campi modulo multi-valore, ovvero l'invio di matrici tramite VAR GET / POST, può essere effettuato in diversi modi, poiché uno standard non è necessariamente definito.
Tre possibili modi per inviare campi o matrici multi-valore sarebbero:
?cars[]=Saab&cars[]=Audi
(Modo migliore- PHP legge questo in un array)
?cars=Saab&cars=Audi
(Cattiva strada - PHP registrerà solo l'ultimo valore)
?cars=Saab,Audi
(Non l'ho provato)
Esempi di moduli
In un modulo, i campi multivalore potrebbero assumere la forma di una casella di selezione impostata su multipli :
<form>
<select multiple="multiple" name="cars[]">
<option>Volvo</option>
<option>Saab</option>
<option>Mercedes</option>
</select>
</form>
(NOTA: in questo caso, sarebbe importante nominare il controllo di selezione some_name[]
, in modo che le richieste risultanti vengano registrate come array da PHP)
... o come più campi nascosti con lo stesso nome :
<input type="hidden" name="cars[]" value="Volvo">
<input type="hidden" name="cars[]" value="Saab">
<input type="hidden" name="cars[]" value="Mercedes">
NOTA: l' utilizzo field[]
per più valori è davvero scarsamente documentato. Non ne vedo alcun riferimento nella sezione sulle chiavi a più valori nella stringa di query - Wikipedia , o nei documenti del W3C che trattano input multi-selezione.
AGGIORNARE
Come hanno sottolineato i commentatori, questo è molto specifico per il framework. Qualche esempio:
Stringa della domanda:
?list_a=1&list_a=2&list_a=3&list_b[]=1&list_b[]=2&list_b[]=3&list_c=1,2,3
Rails:
"list_a": "3",
"list_b":[
"1",
"2",
"3"
],
"list_c": "1,2,3"
Angolare:
"list_a": [
"1",
"2",
"3"
],
"list_b[]": [
"1",
"2",
"3"
],
"list_c": "1,2,3"
( Discussione angolare )
Vedi commenti per esempi in node.js , Wordpress , ASP.net
Mantenimento dell'ordine:
un'altra cosa da considerare è che se è necessario mantenere l' ordine dei propri articoli (ad es. Array come elenco ordinato), si ha davvero solo un'opzione, che passa un elenco di valori delimitato e lo converte esplicitamente in un array tu stesso.