Орден входов в пост, гарантированном для входов массива в PHP?

StackOverflow https://stackoverflow.com/questions/4400698

  •  25-09-2019
  •  | 
  •  

Вопрос

У меня есть форма, где пользователи вводят неограниченное количество строк данных. Они прибывают в форму, введя количество строк на экране, который они желают.

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

Это было полезно?

Решение

То W3 Spec. Не включает правила, на каком порядке значения формы должны быть собраны в набор данных, поэтому технически вы не можете быть уверены. С другой стороны, я не видел корпус (от многочисленных браузеров на многочисленных ОС в течение многих лет), где данные не поставляли в исходном порядке. Я не совсем проверял на случай, когда изменяете значения Tabindex по умолчанию (UI Genered).

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top