PHP中的数组输入是否保证POST中的输入顺序?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (11)

我有一个表单,用户输入无限数量的数据行。他们通过在屏幕上输入任意数量的行来获得表单。

<?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删除行并添加额外的行。

提问于
用户回答回答于

W3规范不包括什么样的顺序形式的价值观应该被组装成一个数据集的规则,所以在技术上你不能肯定。另一方面,我还没有看到一个案例(从多年来众多操作系统上的众多浏览器中)没有以源列表顺序提供数据的情况。在更改默认(UI生成的)tabindex值时,我还没有真正测试过这种情况。

你总是可以在收到数组后排序数组,以确定你读取数值的顺序。

用户回答回答于

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

扫码关注云+社区