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

Tan*_*uta 2 php forms arrays post

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

我有一个包含各种输入、选择和文本区域的大型 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' />
<!-- ... -->
Run Code Online (Sandbox Code Playgroud)

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

$languages = implode(',', $_POST['language[]']);
Run Code Online (Sandbox Code Playgroud)

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

有人可以帮我弄这个吗 ?

提前谢谢了

Gol*_*rol 5

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

$languages = implode(',', $_POST['language']);
Run Code Online (Sandbox Code Playgroud)

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

$languages = 'No languages selected';
if (isset($_POST['language'])){
  $languages = implode(',', $_POST['language']);
}
Run Code Online (Sandbox Code Playgroud)