Php 循环通过复选框

Php 循环通过复选框,php,loops,checkbox,Php,Loops,Checkbox,我想在MySQL中插入复选框是否被选中,只需在对应于该值的列中添加1或0即可。我对0有问题,详情如下 下面是一个复选框示例 <input type='checkbox' name='class[]' value='mathhl' id="mathhl"> 下面是用于检查复选框值的foreach循环 foreach($classes as $value) { if (!isset($value)) { $value = 0; } else {

我想在MySQL中插入复选框是否被选中,只需在对应于该值的列中添加1或0即可。我对0有问题,详情如下

下面是一个复选框示例

<input type='checkbox' name='class[]' value='mathhl' id="mathhl">
下面是用于检查复选框值的foreach循环

foreach($classes as $value) {
    if (!isset($value)) {
        $value = 0;
    }
    else {
        $value = 1;
    }
    echo $value;
}

出于某种原因,它只返回1,而不返回0!我是PHP新手,所以我想知道我到底哪里出了问题,谢谢

只有选中的复选框才会发送到服务器。因此,如果数组中不存在该值,那是因为未选中该框

通过将值设置为数组中的键,可以简化逻辑:

<input type='checkbox' name='class[mathhl]' value='1' id="mathhl">
并使用默认值(例如0)形成一个数组:

并将
$\u POST
数组与默认数组合并:

$results = array_merge( $defaults, $_POST['class']);

现在,
$results
将包含一个关联数组,键为列,值为1或0,这取决于是否选中了复选框。要小心,因为有些人可以发布他们想要发布的数据,所以可能不仅仅是1和0

有什么方法可以将0分配给未选中的复选框吗?@AlexCastro:复选框值是否遵循任何特定模式?需要对它们进行预设,然后您可以检查它们是否存在。复选框分为多个组,您可以在此处看到:
$keys = array( 'mathh1', 'mathh2', 'mathh3');
$defaults = array_combine( $keys, array_fill( 0, count( $keys), 0));
$results = array_merge( $defaults, $_POST['class']);