19

我有一个表单,用户可以在其中输入无限数量的数据行。他们通过在屏幕上输入他们想要的任意数量的行来到达表格。

<?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()随机生成的顺序排列吗?

我使用唯一 ID 而不是更容易排序的整数的原因是用户可以在该页面上使用 javascript 删除行并添加其他行。检查碰撞太难了。

4

2 回答 2

11

W3 规范不包括关于表单值应以何种顺序组装到数据集中的规则,因此从技术上讲,您无法确定。另一方面,我还没有看到没有按源列表顺序提供数据的案例(多年来来自众多操作系统上的众多浏览器)。在更改默认(UI 生成)tabindex 值时,我还没有真正测试过情况。

You could always sort the array (asort) after you've received it to be sure about what order you're reading values.

于 2010-12-09T16:47:48.720 回答
8

它是由HTML4.01保证的(对于 -urlencoded,但假设对于 /form-data 是相同的),并且所有当前的浏览器都按照它们在文档中列出的顺序提交表单字段。

所以是的,它们是按外观排序的,而不是随机的 uuid。

于 2010-12-09T16:47:07.440 回答