2015-08-22 110 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][]']);