Oto, co wymyśliłem:
Przesyłanie pól formularza o wielu wartościach, tj. Przesyłanie tablic za pomocą zmiennych GET / POST, można wykonać na kilka różnych sposobów, ponieważ standard nie jest koniecznie określony.
Trzy możliwe sposoby wysyłania pól lub tablic o wielu wartościach to:
?cars[]=Saab&cars[]=Audi
(Najlepszy sposób - PHP wczytuje to do tablicy)
?cars=Saab&cars=Audi
(Zły sposób - PHP zarejestruje tylko ostatnią wartość)
?cars=Saab,Audi
(Nie próbowałem tego)
Przykłady formularzy
W formularzu pola o wielu wartościach mogą przybrać formę pola wyboru ustawionego na wiele :
<form>
<select multiple="multiple" name="cars[]">
<option>Volvo</option>
<option>Saab</option>
<option>Mercedes</option>
</select>
</form>
(UWAGA: W tym przypadku byłoby ważne nazwać formant select some_name[]
, aby wynikowe zmienne żądań zostały zarejestrowane przez PHP jako tablica)
... lub jako wiele ukrytych pól o tej samej nazwie :
<input type="hidden" name="cars[]" value="Volvo">
<input type="hidden" name="cars[]" value="Saab">
<input type="hidden" name="cars[]" value="Mercedes">
UWAGA: Używanie field[]
wielu wartości jest naprawdę słabo udokumentowane. Nie widzę żadnej wzmianki o tym w sekcji o kluczach wielowartościowych w ciągu zapytania - Wikipedia , ani w dokumentach W3C zajmujących się wejściami wielokrotnego wyboru.
AKTUALIZACJA
Jak zauważyli komentatorzy, jest to bardzo specyficzne dla ram. Kilka przykładów:
Ciąg zapytania:
?list_a=1&list_a=2&list_a=3&list_b[]=1&list_b[]=2&list_b[]=3&list_c=1,2,3
Szyny:
"list_a": "3",
"list_b":[
"1",
"2",
"3"
],
"list_c": "1,2,3"
Kątowy:
"list_a": [
"1",
"2",
"3"
],
"list_b[]": [
"1",
"2",
"3"
],
"list_c": "1,2,3"
( Dyskusja kątowa )
Zobacz komentarze do przykładów w node.js , Wordpress , ASP.net
Utrzymywanie porządku:
Jeszcze jedną rzeczą do rozważenia jest to, że jeśli musisz zachować porządek swoich przedmiotów (tj. Tablica jako lista uporządkowana), naprawdę masz tylko jedną opcję, która przekazuje ograniczoną listę wartości i jawnie konwertuje ją na tablica sama.