我在循环中有一个表单元素,其中一个是带有多个选择选项的选择框。 这是代码。
<?php for($i = 1; $i <= 2; $i++){ ?>
<input type="text" name="product[]" />
<select name="problems[]"
<option value="problem1">Problem 1</option>
<option value="problem2">Problem 2</option>
<option value="problem3">Problem 3</option>
</select>
<?php } ?>
我输入产品&#34; TV&#34;,为产品选择2选项&#34; TV&#34; ie problem1和problem2以及另一个产品Fridge的所有3个选项。 当我提交表格打印发布数据时,我得到数组中的数据
Array
(
[product] => Array
(
[0] => TV
[1] => Fridge
)
[problems] => Array
(
[0] => problem1
[1] => problem2
[2] => problem1
[3] => problem1
[4] => problem3
)
)
在这里,我无法检查哪个产品是哪个问题。 我想要的是这样的
Array
(
[product] => Array
(
[0] => TV
[1] => Fridge
)
[problems] => Array
(
[0] => Array
(
[0] => problem1
[1] => problem2
)
[1] => Array
(
[0] => problem1
[1] => problem2
[2] => problem3
)
)
)
有没有办法以这种方式获得阵列? 非常感谢您的帮助。
答案 0 :(得分:1)
您需要在输入和选择元素中使用计数器变量$i
,此外您还需要进行更多更改。以下列方式重构您的代码,
<?php for($i = 0; $i <= 1; $i++){ ?>
<input type="text" name="product[<?php echo $i; ?>]" />
<select name="problems[<?php echo $i; ?>][]" multiple>
<option value="problem1">Problem 1</option>
<option value="problem2">Problem 2</option>
<option value="problem3">Problem 3</option>
</select>
<?php } ?>
旁注:如果您想要查看完整的数组结构,请执行var_dump($_POST);
答案 1 :(得分:0)
那样的事情呢?
<?php for($i = 1; $i <= 2; $i++){ ?>
<input type="text" name="product_<?php echo $i; ?>[]" />
<select name="problems_<?php echo $i; ?>[]"
<option value="problem1">Problem 1</option>
<option value="problem2">Problem 2</option>
<option value="problem3">Problem 3</option>
</select>
<?php } ?>
答案 2 :(得分:0)
只需将您的问题字段命名为<select name="problems[<?php echo $i;?>][]">
答案 3 :(得分:0)
将代码更正为
<?php for($i = 1; $i <= 2; $i++){ ?>
<input type="text" name="product[<?php echo $i; ?>]" />
<select name="problems[<?php echo $i; ?>][]" multiple>
<option value="problem1">Problem 1</option>
<option value="problem2">Problem 2</option>
<option value="problem3">Problem 3</option>
</select>
<?php } ?>
此外,您在关闭代码时遇到错误i-e <select name="problems[]"
使用结束标记符号将其关闭并使用multiple
<select name="problems[<?php echo $i; ?>][]" multiple>
关键字