在表单提交时将每个复选框组值转换为单独的变量

时间:2013-11-29 15:19:08

标签: php

我有多个复选框组,提交表单后,我希望将所选的每组复选框添加到自己的变量中。

这是表格:

<form action="" method="get">
<p>apple <input type="checkbox" value="apple" name="fruits[]" /></p>
<p>orange <input type="checkbox" value="orange" name="fruits[]" /></p>
<p>peach <input type="checkbox" value="peach" name="fruits[]" /></p>

<br>

<p>red <input type="checkbox" value="red" name="colors[]" /></p>
<p>green <input type="checkbox" value="green" name="colors[]" /></p>
<p>blue <input type="checkbox" value="blue" name="colors[]" /></p>

<br>

<p>chicken <input type="checkbox" value="chicken" name="meats[]" /></p>
<p>pork <input type="checkbox" value="pork" name="meats[]" /></p>
<p>lamb <input type="checkbox" value="lamb" name="meats[]" /></p>

<button>submit</button>
</form>

这是我的代码:

$string = 'fruits,colors,meats';
$str_array = explode(',', $string);

foreach ($str_array as $value) {
    if (isset($_GET[$value])) {
        $group_name = $_GET[$value];

        foreach ($group_name as $group_item) {
            $group_string .= ' ' . $group_item;
        }
    }


}

echo $group_string;

使用该代码,如果我选择每个组中的第一个复选框并点击submit,我将在一个字符串中获得以下值$group_string = apple red chicken

根据我编写的代码,对我来说确实有意义,但我想要的是每个选项组都有自己的变量,其值被赋值,所以我想要的是什么得到的是以下(假设我再次从每个组中选择第一个选项):

$fruits = 'apple'; 
$colors = 'red';
$meats = 'chicken';

但我不知道如何重写它,所以我明白了。此外,选项组的数量尚未预先知道,必须动态发生。

2 个答案:

答案 0 :(得分:1)

好吧,为了方便起见,我冒昧地重写了你的部分PHP,但这里是

您的新和改进的 php文件

<?php
// assume we know beforehand what we are looking for
$groups = explode(',','fruits,colors,meats');
foreach ($groups as $group) {
  if (isset($_GET[$group])) {
    $vv = array();
    foreach ($_GET[$group] as $item) $vv[] = $item;
    $$group = implode(' ',$vv);
  }
}
var_dump($fruits,$colors,$meats);
?>

我在PHP中使用了一个名为variable variables的构造。这实际上是@Lohardt给出的几乎 相同的 答案。我希望这可以帮助你。如果没有,那么发表评论

答案 1 :(得分:0)

您可以执行以下操作:

<input type="checkbox" value="apple" name="groups[fruits][]" />
<input type="checkbox" value="apple" name="groups[colors][]" />
<input type="checkbox" value="apple" name="groups[meats][]" />

您的$ _POST将如下所示:

Array
(
    [groups] => Array
        (
            [fruits] => Array
                (
                    [0] => apple
                )

            [colors] => Array
                (
                    [0] => red
                )

        )

)

使用foreach循环来获取键和值应该很简单。

编辑:然后您可以将值分配给这样的变量:

${$key} = $value;

并使用它你会做任何变量:

echo $color;