我有多个复选框组,提交表单后,我希望将选中的每组复选框添加到它们自己的变量中。
这是形式:
<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;