在表单提交时,将每个复选框组的值放入单独的变量中


Get each chekbox group values into separate variables upon form submission

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

这是形式:

<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';

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

好的,为了方便起见,我随意重写了你的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给出的答案几乎相同的答案。我希望这能帮助你。如果没有,那么给我发一条评论

您可以执行以下操作:

<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;