Каков ожидаемый порядок массива, представленного в форме HTML? - PullRequest
10 голосов
/ 15 сентября 2010

Мне интересно, есть ли какая-либо гарантия порядка переменных POST, которую я увижу на стороне сервера.

Мой пример использования - у меня есть форма, которую пользователь заполняет для вводасписок имен и писем.Я использую строки таблицы, каждая из которых имеет два ввода:

<table>
<tr>
<td><input type='text' name='name[]' /></td>
<td><input type='text' name='email[]' /></td>
</tr>
<tr>
<td><input type='text' name='name[]' /></td>
<td><input type='text' name='email[]' /></td>
</tr>
</table>

Строка может быть клонирована с помощью javascript, чтобы позволить пользователю вводить больше имен и адресов электронной почты, поэтому я не буду знать заранеесколько раз будет отправлено.

На стороне сервера я вижу набор $ _POST ['email'] и $ _POST ['name'], но мне интересно, могу ли я смело предположить, что $ _POST ['email'] [0] будет соответствовать $ _POST [' name '] [0], $ _POST [' email '] [1] будет соответствовать $ _POST [' name '] [1] и так далее.Некоторые базовые тесты показывают, что да, но мне интересно, есть ли гарантия или мне просто везет.

Ответы [ 4 ]

13 голосов
/ 15 сентября 2010

почему бы не добавить ключ группировки, например:

<td><input type='text' name='user[0][name]' /></td>
<td><input type='text' name='user[0][email]' /></td>
</tr>
<tr>
<td><input type='text' name='user[1][name]' /></td>
<td><input type='text' name='user[1][email]' /></td>

, а затем вручную установить индексы user при клонировании на основе текущего номера.Таким образом, все уже сгущено.

9 голосов
/ 15 сентября 2010

Каков ожидаемый порядок массива, представленного в форме HTML?

Согласно спецификации HTML:

Имена / значения элементов управленияперечислены в порядке их появления в документе

http://www.w3.org/TR/html401/interact/forms.html#form-content-type

Однако лучше применять кодирование с использованием подхода с индексированными массивами, как показано в ответе prodigitalson.

2 голосов
/ 15 сентября 2010

Данные будут отображаться в том же порядке, что и в форме. Итак, в первом ряду есть ключ 0, во втором ряду - 1.

0 голосов
/ 15 сентября 2010

Как сказал Вайдас Зилионис, данные будут отображаться в том же порядке, в каком они указаны в форме, см. Спецификацию W3C HTML 4.01 :

application /x-www-form-urlencoded
[...] 2. Имена / значения элементов управления перечислены в порядке их появления в документе .

multipart / form-data
[...] Сообщение «multipart / form-data» содержит серию частей, каждая из которых представляет успешный элемент управления.Детали отправляются обработчику в том же порядке, соответствующие элементы управления появляются в потоке документов .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...