Вот что я понял:
Отправка полей формы с несколькими значениями, т. Е. Отправка массивов с помощью переменных GET / POST, может осуществляться несколькими различными способами, поскольку стандарт не обязательно прописан.
Три возможных способа отправки многозначных полей или массивов:
?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>
(ПРИМЕЧАНИЕ. В этом случае было бы важно назвать элемент управления select some_name[]
, чтобы получаемые переменные запроса были зарегистрированы PHP как массив)
... или несколько скрытых полей с одним и тем же именем :
<input type="hidden" name="cars[]" value="Volvo">
<input type="hidden" name="cars[]" value="Saab">
<input type="hidden" name="cars[]" value="Mercedes">
ПРИМЕЧАНИЕ: Использование field[]
для нескольких значений действительно плохо документировано,Я не вижу упоминаний об этом в разделе о многозначных ключах в Строка запроса - Википедия или в 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"
(Angular обсуждение )
См. Комментарии к примерам в node.js , Wordpress , ASP.net
Поддержание порядка: Еще одна вещь, на которую следует обратить внимание: если вам нужно поддерживать порядок ваших товаров(т.е. массив как упорядоченный список), у вас действительно есть только одна опция, которая передает разделенный список значений и явно конвертирует его в массив самостоятельно.