如何在表单中获取选择框数组的多个选项

时间:2017-05-09 10:36:57

标签: php html forms

我在循环中有一个表单元素,其中一个是带有多个选择选项的选择框。 这是代码。

<?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
                )
        )
)

有没有办法以这种方式获得阵列? 非常感谢您的帮助。

4 个答案:

答案 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>关键字