У меня есть форма, в которой пользователи вводят неограниченное количество строк данных. Они приходят к форме, вводя любое количество строк на экране, которые они желают.
<?php $numRows = $_GET['NUM_ROWS_REQUESTED']; ?> <form method="post"> <?php for($i = 0; $i < $numRows ;$i++) { $uuid = uniqid(); ?> <input type="text" name="MYDATA[<?php print $uuid; ?>][FIRST_NAME]" /> <input type="text" name="MYDATA[<?php print $uuid; ?>][LAST_NAME]" /> <?php } ?> </form>
Мне интересно, если после $_POST['MYDATA']
формы я получаю эти записи в массиве $_POST['MYDATA']
если мне будет гарантировано, что они будут упорядочены в той же последовательности, что и на экране. Или они будут упорядочены с помощью uniqid()
который генерируется случайным образом?
Причина, по которой я использую уникальный идентификатор вместо целых чисел, которые будут проще упорядочить, заключается в том, что пользователи могут удалять строки и добавлять дополнительные строки с помощью javascript на этой странице. Было бы слишком сложно проверить наличие столкновений.
Спецификация W3 не включает в себя правила того, в каком порядке значения формы должны быть собраны в набор данных, поэтому технически вы не можете быть уверены. С другой стороны, я не видел случая (из многочисленных браузеров в многочисленных операционных системах на протяжении многих лет), где данные не были отправлены в списке-листинг-порядке. Я действительно не проверял случаи, когда изменял значения tabindex по умолчанию (UI).
Вы всегда можете отсортировать массив ( asort ) после того, как вы его получили, чтобы быть уверенным в том, какой порядок вы читаете.
Это гарантируется HTML4.01 (для -urlencoded, но предполагается, что он идентичен для / form-data), и все текущие браузеры представляют поля формы в том порядке, в котором они указаны в документе.
Так что да, они упорядочены по их внешнему виду, а не случайным uuid.