2010-12-09 49 views
18

我有一個表單,用戶輸入無限數量的數據行。他們通過在屏幕上輸入任意數量的行來獲得表單。在POST中保證數組輸入在PHP中的INPUTS的順序是?

<?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。檢查碰撞太困難了。

+0

如果您不確定。把它分類。 – DampeS8N 2010-12-09 16:54:54

+0

@ DampeS8N我沒有任何東西可以排序。屏幕上輸入的順序是所需的順序。如果沒有使用AJAX來檢索系統日期,由於javascript使用他們PC的日期,這將不可靠。我希望在創建新行時避免在javascript中分析現有行。 – 2010-12-09 17:03:29

回答

9

W3 spec不包括規則表單的值應該組合到數據集中的順序,所以在技術上你不能確定。另一方面,我還沒有看到一個案例(從多年來衆多操作系統上的衆多瀏覽器中)沒有以源列表順序提供數據的情況。在更改默認(UI生成的)tabindex值時,我還沒有真正測試過這種情況。

您可以在收到數組後確定排序順序(asort),以確定您讀取的值的順序。

6

這是由HTML4.01(用於-urlencoded,但假定它與/ form-data相同)保證的,當前所有瀏覽器按照它們在文檔中列出的順序提交表單域。

所以是的,它們是按照它們的外觀排序的,而不是隨機的uuid。