2015-08-22 151 views
0

比如我有HTML這樣後兩個選擇與多重選擇

<select name="something[]" multiple="multiple"> 
    <option value="1">1</option> 
    <option value="2">2</option> 
</select> 

和我的表單中,我可以添加這些選擇muliple時間由JavaScript 動態的,所以它成爲

<!-- Control 1 --> 
<select name="something[]" multiple="multiple"> 
     <option value="1">1</option> 
     <option value="2">2</option> 
    </select> 
<!-- Control 2 --> 
    <select name="something[]" multiple="multiple"> 
     <option value="1">1</option> 
     <option value="2">2</option> 
    </select> 

,然後在控制1上選擇「1」,在控制2上選擇「1 & 2」。 我從PHP後得到的是這樣的

array("1","2") 

我想要得到的是:

array(
array("1"), 
array("1","2") 
) 

請幫助!

+3

嘗試name =「something [0] []」name =「something [1] []」 – alamnaryab

+0

具有相同名稱的表單控件會導致問題。我建議將第二個名稱重命名爲稍微不同的名稱,以便知道正在處理哪個控件。 – jeff

回答

0

對兩個輸入使用相同的名稱something[]。因此,在提交數據時會捕獲數據(特別是當您在兩者中具有相同的值時)。因此,我認爲對兩個輸入使用兩個不同的名稱something_1[]something_2[]會更好。 (代碼是不正確的標準。我只是想解決這個問題)

<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="GET"> 
    <!-- Control 1 --> 
<select name="something_1[]" multiple="multiple"> 
    <option value="1">1</option> 
    <option value="2">2</option> 
</select> 
<!-- Control 2 --> 
<select name="something_2[]" multiple="multiple"> 
    <option value="1">1</option> 
    <option value="2">2</option> 
</select> 
    <input type="Submit"> 
</form> 
<?php 
    print_r($_GET); 
?> 

輸出

Array ([something_1] => Array([0] => 1) [something_2] => Array([0] => 1 [1] => 2)) 

另一個apporach

正如@ alamnaryab在他的評論中提到,你也可以使用這種方法。它將作爲單獨的數組服務於這兩個數組。

print_r($_GET['something[0][]']); 
print_r($_GET['something[1][]']);