Гарантируется ли порядок входных данных в сообщении для входных данных массива в PHP?
У меня есть форма, в которой пользователи вводят неограниченное количество строк данных. Они приходят к форме, вводя любое количество строк на экране, которое они желают.
<?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']
, могу ли я гарантировать, что они будут упорядочены в той же последовательности, в какой они были опубликованы на экране. Или они будут упорядочены по uniqid()
, сгенерированным случайным образом?
Причина, по которой я использую уникальный идентификатор вместо простых целых чисел, которые было бы проще упорядочивать, пользователи могут удалять строки и добавлять дополнительные строки с помощью javascript на этой странице. Было бы слишком сложно проверить наличие столкновений.
2 answers
Спецификация W3 не содержит правил о том, в каком порядке значения формы должны быть собраны в набор данных, поэтому технически вы не можете быть уверены. С другой стороны, я не видел случая (из многочисленных браузеров на многочисленных операционных системах за эти годы), когда данные не предоставлялись в порядке перечисления источников. Я на самом деле не проверял случаи изменения значений tabindex по умолчанию (сгенерированных пользовательским интерфейсом).
Вы всегда можете отсортировать массив (asort) после того, как вы получили его в уверены в том, в каком порядке вы считываете значения.
Это как бы гарантируется HTML4.01 (для -url-кода, но предполагается, что он идентичен для /form-данных), и все текущие браузеры отправляют поля формы в порядке, в котором они перечислены в документе.
Так что да, они упорядочены по их внешнему виду, а не по случайному uuid.