首页 > 解决方案 > 使用 PHP 捕获 HTML 多选数组

问题描述

我有两个多项选择声明为:

<form method="post">
  <input type="text" name="vcgame[]" id="vcgame_1" value="">
  <select name="vccoun[][]" id="vccoun_5" multiple="multiple">
    <option value="1">West Indies</option>
    <option value="2" selected="selected">India</option>
    <option value="3" selected="selected">Australia</option>
  </select>

  <input type="text" name="vcgame[]" id="vcgame_2" value="">
  <select name="vccoun[][]" id="vccoun_9" multiple="multiple">
    <option value="4">Italy</option>
    <option value="5" selected="selected">Germany</option>
  </select>
</form>

我想捕捉 PHP 中的值,像这样

$game_list= $_POST['vcgame'];
$country_list= $_POST['vccoun'];
$game_country= array();
foreach($game_list as $key=>$val)
{
    $game_country[$key]= $country_list[$key];
}

但是值是这样的(带有print_ron $_POST):

[vcgame] => Array
(
    [0] => cricket
    [1] => football
)

[vccoun] => Array
(
    [0] => Array
    (
        [0] => 2
    )

    [1] => Array
    (
        [0] => 3
    )

    [2] => Array
    (
        [0] => 5
    )
)

代替:

[vcgame] => Array
(
    [0] => cricket
    [1] => football
)

[vccoun] => Array
(
    [0] => Array
        (
            [0] => 2
            [1] => 3
        )
    [1] => Array
        (
            [0] => 5
        )
)

如何做到这一点?任何人都可以帮忙吗?提前致谢。

标签: phparrayshtml-selectmulti-select

解决方案


尝试将表单上的字段名称更改为您想要获得所需结果的索引:

<form method="post">
  <input type="text" name="vcgame[0]" id="vcgame_1" value="">
  <select name="vccoun[0][]" id="vccoun_5" multiple="multiple">
    <option value="1">West Indies</option>
    <option value="2" selected="selected">India</option>
    <option value="3" selected="selected">Australia</option>
  </select>

  <input type="text" name="vcgame[1]" id="vcgame_2" value="">
  <select name="vccoun[1][]" id="vccoun_9" multiple="multiple">
    <option value="4">Italy</option>
    <option value="5" selected="selected">Germany</option>
  </select>
</form>

然后$_POST输出是:

Array
(
    [vcgame] => Array
        (
            [0] => cricket
            [1] => football
        )
    [vccoun] => Array
        (
            [0] => Array
                (
                    [0] => 2
                    [1] => 3
                )
            [1] => Array
                (
                    [0] => 5
                )
        )
)

甚至像这样:

<input type="text" name="data[0][vcgame]" id="vcgame_1" value="">
<select name="data[0][vccoun][]" id="vccoun_5" multiple="multiple">
...
<input type="text" name="data[1][vcgame]" id="vcgame_2" value="">
<select name="data[1][vccoun][]" id="vccoun_9" multiple="multiple">
Array
(
    [data] => Array
        (
            [0] => Array
                (
                    [vcgame] => cricket
                    [vccoun] => Array
                        (
                            [0] => 2
                            [1] => 3
                        )
                )
            [1] => Array
                (
                    [vcgame] => football
                    [vccoun] => Array
                        (
                            [0] => 5
                        )
                )
        )
)

推荐阅读