2016-03-14 6 views
0

我需要用一個提交(保存)按鈕創建多個表單。將HTML輸入數組命名爲[]或[0]?

<?php for ($i = 0; $i < count($c); $i++): ?> 

    <div>    
     <input type="radio" name="gender[<?php echo $i ?>]" id="gender_<?php echo $i ?>_male" value="male" /> 
     <label for="gender_<?php echo $i ?>_male">Male</label> 
     <input type="radio" name="gender[<?php echo $i ?>]" id="gender_<?php echo $i ?>_female" value="female" /> 
     <label for="gender_<?php echo $i ?>_female">Female</label> 
    </div> 

    <div> 
     <div><label for="Name_<?php echo $i ?>">Name:</label></div> 
     <div><input type="text" name="Name[]" id="Name_<?php echo $i ?>" /></div> 
    </div>  

<?php endfor ?> 

我不得不name the radio buttons作爲性別[0] ... gender [1],以便這些組具有唯一的名稱。 但我已將Name命名爲Name []。

我的問題是,我的名字[]名稱[0] ...名稱[1],而不是流量是恆定的嗎? 我的意思是,可以 $ _POST ['名稱'] [0]曾被映射到性別[1]?

+0

_「can $ _POST ['Name'] [0]曾經被映射到gender [1]?」_ ....什麼?不,如果可以通過「隨機」分配不同的名稱,那麼這將違反命名ANYTHING的全部目的 - 除此之外,請參閱Marc B的答案。 – Epodax

回答

0

瀏覽器TEND按照他們在html中列出的順序提交字段,但據我所知,這不是必需的。所以,如果你有

<input name="foo[]" ...> ... should become $_POST['foo'][0] 
<input name="foo[]" ...> ... should become $_POST['foo'][1] 
<input name="foo[]" ...> ... should become $_POST['foo'][2] 

但由於沒有要求,你可能會得到一些其他順序的領域。如果您使用[]命名hack,並執行必須彼此關聯的多個字段,則最好明確列出索引,以確保維護字段關聯,例如,

<input name="firstname[0]"> <input name="lastname[0]"> 
<input name="firstname[1]"> <input name="lastname[1]"> 
etc... 

不這樣做,你的用戶名可以進入John DoeJane Smith,但在服務器接收John SmithJane Doe。不太可能,但是......比對不起更安全。

2

瀏覽器將始終以相同的順序提交字段。這是由the HTML specification要求:

循環:對於控制各要素領域,樹爲了,運行下面的子步驟:

所以,除非你開始禁用領域,你不會有一個問題。

顯式可能會讓它更容易閱讀你的代碼。