PHP:如何在变量中保存$ _POST中的多个复选框数组

时间:2015-06-19 18:55:31

标签: php arrays forms post

我是PHP新手,正在寻求以下方面的帮助:

我有一个包含各种输入,选择和textareas的大型HTML表单。在提交时,我将所有字段值传递到另一个PHP页面以创建包含它们的电子邮件。

这适用于,适用于文字输入,单选按钮,选择,文本等。但不适用于复选框

在表单中,我有多个复选框,所有复选框都使用相同的名称:

<input type='checkbox' class='someClass' id='language1' name='language[]' value='de - German' />
<input type='checkbox' class='someClass' id='language2' name='language[]' value='en - English' />
<input type='checkbox' class='someClass' id='language3' name='language[]' value='fr - French' />
<!-- ... -->

在PHP方面,我尝试了以下操作,但如果我将$languages用于我的电子邮件正文,则会显示为空白(所有其他字段显示正确):

$languages = implode(',', $_POST['language[]']);

我要做的是将$_POST["language"]数组中的所有值保存在一个变量中,用逗号分隔(最后没有逗号)。

有人可以帮我这个吗?

非常感谢提前

2 个答案:

答案 0 :(得分:4)

如果在表单中使用anyname[],PHP会将其转换为数组,但名称中不包含[]。所以这应该有效:

$languages = implode(',', $_POST['language']);

请注意,未发布未选中的复选框,因此如果您选中“无”,则不会发布任何值,也不会设置$_POST['language']。你必须检查一下。

$languages = 'No languages selected';
if (isset($_POST['language'])){
  $languages = implode(',', $_POST['language']);
}

答案 1 :(得分:0)

HTML

<input type='checkbox' class='someClass' id='language1' name='language[]' value='1' />
<input type='checkbox' class='someClass' id='language2' name='language[]' value='2' />
<input type='checkbox' class='someClass' id='language3' name='language[]' value='3' />
<!-- ... -->

PHP

$language_ = array(1=>'de - German',2=>'en - English',3=>'fr - French');
if (!empty($_GET['language'])) {
     foreach ($_GET['language'] as $l) {
                $lan0 .= $language_[$l].', ';
            }
echo rtrim($lan0,", ");