Гарантируется ли порядок входных данных в сообщении для входных данных массива в 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 на этой странице. Было бы слишком сложно проверить наличие столкновений.

Author: aw crud, 2010-12-09

2 answers

Спецификация W3 не содержит правил о том, в каком порядке значения формы должны быть собраны в набор данных, поэтому технически вы не можете быть уверены. С другой стороны, я не видел случая (из многочисленных браузеров на многочисленных операционных системах за эти годы), когда данные не предоставлялись в порядке перечисления источников. Я на самом деле не проверял случаи изменения значений tabindex по умолчанию (сгенерированных пользовательским интерфейсом).

Вы всегда можете отсортировать массив (asort) после того, как вы получили его в уверены в том, в каком порядке вы считываете значения.

 9
Author: Rudu, 2010-12-09 16:53:59

Это как бы гарантируется HTML4.01 (для -url-кода, но предполагается, что он идентичен для /form-данных), и все текущие браузеры отправляют поля формы в порядке, в котором они перечислены в документе.

Так что да, они упорядочены по их внешнему виду, а не по случайному uuid.

 6
Author: mario, 2010-12-09 16:47:07