PHP多复选框数组

PHP多复选框数组,php,arrays,variables,checkbox,Php,Arrays,Variables,Checkbox,我在这里查找了一些示例,但其中很多示例要么太高级,不适合我掌握PHP,要么它们的示例太具体,不适合自己的项目。我目前正在努力处理PHP表单的一个非常基本的部分 我正在尝试创建一个带有几个复选框的表单,每个复选框都指定了不同的值,我希望这些复选框被发送到一个变量(数组?),我可以稍后回显/使用,在我的情况下,我将在电子邮件中发送选中的值 到目前为止,我已经尝试了一些变化,但最接近的是这个 <form method='post' id='userform' action='thisform.p

我在这里查找了一些示例,但其中很多示例要么太高级,不适合我掌握PHP,要么它们的示例太具体,不适合自己的项目。我目前正在努力处理PHP表单的一个非常基本的部分

我正在尝试创建一个带有几个复选框的表单,每个复选框都指定了不同的值,我希望这些复选框被发送到一个变量(数组?),我可以稍后回显/使用,在我的情况下,我将在电子邮件中发送选中的值

到目前为止,我已经尝试了一些变化,但最接近的是这个

<form method='post' id='userform' action='thisform.php'>
<tr>
    <td>Trouble Type</td>
    <td>
    <input type='checkbox' name='checkboxvar' value='Option One'>1<br>
    <input type='checkbox' name='checkboxvar' value='Option Two'>2<br>
    <input type='checkbox' name='checkboxvar' value='Option Three'>3
    </td>
</tr>
</table>
<input type='submit' class='buttons'>
</form>

<?php
$checkboxvar[] = $_REQUEST['checkboxvar'];
?>

故障类型
1
2
3.
我将$checkboxvar[]回显到我的电子邮件中。 我是不是完全错了?我的另一个想法是使用很多if语句

<form method='post' id='userform' action='thisform.php'> <tr>
    <td>Trouble Type</td>
    <td>
    <input type='checkbox' name='checkboxvar[]' value='Option One'>1<br>
    <input type='checkbox' name='checkboxvar[]' value='Option Two'>2<br>
    <input type='checkbox' name='checkboxvar[]' value='Option Three'>3
    </td> </tr> </table> <input type='submit' class='buttons'> </form>

<?php 
if (isset($_POST['checkboxvar'])) 
{
    print_r($_POST['checkboxvar']); 
}
?>
请记住,您应该随时根据需要对输入内容进行清理。


对于记录,此文件的官方文档存在:

您需要使用方括号表示法将值作为数组发送:

<form method='post' id='userform' action='thisform.php'>
<tr>
    <td>Trouble Type</td>
    <td>
    <input type='checkbox' name='checkboxvar[]' value='Option One'>1<br>
    <input type='checkbox' name='checkboxvar[]' value='Option Two'>2<br>
    <input type='checkbox' name='checkboxvar[]' value='Option Three'>3
    </td>
</tr>
</table>
<input type='submit' class='buttons'>
</form>

故障类型
1
2
3.

但是请注意,只发送选中复选框的值。

在输入标记的属性名称中添加
[]

 <form action="" name="frm" method="post">
<input type="checkbox" name="hobby[]" value="coding">  coding &nbsp
<input type="checkbox" name="hobby[]" value="database">  database &nbsp
<input type="checkbox" name="hobby[]" value="software engineer">  soft Engineering <br>
<input type="submit" name="submit" value="submit"> 
</form>

编码
数据库
软工程
对于PHP代码:

<?php
 if(isset($_POST['submit']){
   $hobby = $_POST['hobby'];

   foreach ($hobby as $hobys=>$value) {
             echo "Hobby : ".$value."<br />";
        }
}
?>
if(isset($\u POST['submit'])){
对于($i=0;$i请通过for循环尝试此方法

<form method="post">
<?php
for ($i=1; $i <5 ; $i++) 
{ 
    echo'<input type="checkbox" value="'.$i.'" name="checkbox[]"/>';
} 
?>
<input type="submit" name="submit" class="form-control" value="Submit">  
</form>

<?php 
if(isset($_POST['submit']))
{
    $check=implode(", ", $_POST['checkbox']);
    print_r($check);
}     
?>

还请记住,您可以将自定义索引包含到发送到服务器的数组中,如下所示

<form method='post' id='userform' action='thisform.php'>
<tr>
    <td>Trouble Type</td>
    <td>
    <input type='checkbox' name='checkboxvar[4]' value='Option One'>4<br>
    <input type='checkbox' name='checkboxvar[6]' value='Option Two'>6<br>
    <input type='checkbox' name='checkboxvar[9]' value='Option Three'>9
    </td>
</tr>
<input type='submit' class='buttons'>
</form>

当我尝试调用checkboxvar[]时,它只返回“Array”而不是指定给复选框的值。@Darkgajda请查看我关于如何回显它的答案。我想我已经得到了答案,但我在这方面确实是新手,并且很难理解如何使用
内爆(','$\u POST['checkboxvar']);
将其放入我的电子邮件中。目前我有
$message=“message blah blah$array.\n”
但它似乎不喜欢它。@DarekGajda
$message=“message blah blah.”内爆(“,”,$array)。“\n”;
引号中的逗号
,“
替换为您想要的任何分隔符,如果您想用空格put将其分隔开来
等@DarekGajda请记住,请清理您的输入,以防邮件头注入攻击。基本上要做
$array=str\u replace(array(“\r”,“\n”),“$array);
删除换行符和回车符。如果我们也要获取并发送标签内的文本,该怎么办?像这样1,2,3。他包含的foreach语句对我的情况非常有帮助。谢谢,Rawnay。@Sébastien任何人都可以添加答案,如果OP接受了答案,这并不意味着这是最好的答案;而这段代码是snippet可能会解决这个问题,这确实有助于提高您的文章质量。请记住,您是在为将来的读者回答这个问题,而这些人可能不知道您的代码建议的原因。
<form method="post">
<?php
for ($i=1; $i <5 ; $i++) 
{ 
    echo'<input type="checkbox" value="'.$i.'" name="checkbox[]"/>';
} 
?>
<input type="submit" name="submit" class="form-control" value="Submit">  
</form>

<?php 
if(isset($_POST['submit']))
{
    $check=implode(", ", $_POST['checkbox']);
    print_r($check);
}     
?>
<form method='post' id='userform' action='thisform.php'>
<tr>
    <td>Trouble Type</td>
    <td>
    <input type='checkbox' name='checkboxvar[4]' value='Option One'>4<br>
    <input type='checkbox' name='checkboxvar[6]' value='Option Two'>6<br>
    <input type='checkbox' name='checkboxvar[9]' value='Option Three'>9
    </td>
</tr>
<input type='submit' class='buttons'>
</form>
<form method='post' id='userform' action='thisform.php'>
<tr>
    <td>Trouble Type</td>
    <td>
    <?php foreach($accounts as $account) { ?>
        <input type='checkbox' name='accounts[<?php echo $account->id ?>]' value='<?php echo $account->name ?>'>
        <?php echo $account->name ?>
        <br>
    <?php } ?>
    </td>
</tr>
<input type='submit' class='buttons'>
</form>

<?php 
if (isset($_POST['accounts'])) 
{
    print_r($_POST['accounts']); 
}
?>