Ось що я з’ясував:
Подання полів форми з великим значенням, тобто подання масивів через GET / POST vars, можна виконати декількома різними способами, оскільки стандарт не обов'язково прописаний.
Три можливі способи надіслати багатозначні поля або масиви:
?cars[]=Saab&cars[]=Audi
(Найкращий спосіб - PHP читає це в масив)
?cars=Saab&cars=Audi
(Поганий спосіб - PHP реєструє лише останнє значення)
?cars=Saab,Audi
(Я цього не пробував)
Приклади форм
У формі багатозначні поля можуть мати вигляд вікна вибору, встановленого на кілька :
<form>
<select multiple="multiple" name="cars[]">
<option>Volvo</option>
<option>Saab</option>
<option>Mercedes</option>
</select>
</form>
(ПРИМІТКА. У цьому випадку було б важливо назвати елемент вибору some_name[]
, щоб отриманий запит vars був зареєстрований як масив PHP)
... або як кілька прихованих полів з однаковою назвою :
<input type="hidden" name="cars[]" value="Volvo">
<input type="hidden" name="cars[]" value="Saab">
<input type="hidden" name="cars[]" value="Mercedes">
ПРИМІТКА. Використання field[]
для кількох значень дійсно погано зафіксовано. Я не бачу жодної згадки про це в розділі про багатозначні ключі в рядку Query - Wikipedia , або в документах W3C, що займаються введеннями з декількома виборами.
ОНОВЛЕННЯ
Як зазначають коментатори, це дуже важливо для рамки. Деякі приклади:
Рядок запиту:
?list_a=1&list_a=2&list_a=3&list_b[]=1&list_b[]=2&list_b[]=3&list_c=1,2,3
Рейки:
"list_a": "3",
"list_b":[
"1",
"2",
"3"
],
"list_c": "1,2,3"
Кутовий:
"list_a": [
"1",
"2",
"3"
],
"list_b[]": [
"1",
"2",
"3"
],
"list_c": "1,2,3"
(Кутова дискусія )
Дивіться коментарі щодо прикладів у node.js , Wordpress , ASP.net
Підтримання порядку:
Ще одна річ, яку слід врахувати, це те, що якщо вам потрібно підтримувати порядок своїх елементів (тобто масив як упорядкований список), у вас дійсно є лише одна опція, яка передає розмежений список значень і явно перетворює його в самі масив.