我有多个复选框组,提交表单后,我希望将所选的每组复选框添加到自己的变量中。
这是表格:
<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';
但我不知道如何重写它,所以我明白了。此外,选项组的数量尚未预先知道,必须动态发生。
答案 0 :(得分:1)
好吧,为了方便起见,我冒昧地重写了你的部分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;