复选框处于选中状态,并且未分配新值


Checkbox is selected and not assigning a new value

无论选择什么,它仍然为所有复选框分配值 1,而不会将所选复选框更改为值 0。从语法的角度来看,这是正确的代码,但无论如何我都不明白为什么它不将选定的框值更改为"0"

//Correct answer variables
$chkBox1 = '1';
$chkBox2 = '1';
$chkBox3 = '1';
$chkBox4 = '1';
$chkBox5 = '1';
if (isset($_POST['chkBox1'])) {
if ($chkBox1 == 'chkBox1Selected') {
$chkBox1 = '0';
}
}//End of chkBox1Selected logic

if (isset($_POST['chkBox2'])) {
if ($chkBox2 == 'chkBox2Selected') {
$chkBox2 = '0';
}
}//End of chkBox2Selected logic

if (isset($_POST['chkBox3'])) {
if ($chkBox3 == 'chkBox3Selected') {
$chkBox3 = '0';
}
}//End of chkBox3Selected logic

您的if语句永远不会计算为 true

看看一个复选框:

$chkBox1 = '1';
if (isset($_POST['chkBox1'])) {
    if ($chkBox1 == 'chkBox1Selected') {
        $chkBox1 = '0';
    }
}

$chkBox1设置为 '1' ,并且永远不会更改,因此它永远不会等于 'chkBox1Selected'

话虽如此,您不必担心复选框的值,因为只有选中的复选框才会发送到服务器

从理论上讲,您可以只做:

if (isset( $_POST['chkBox1'])) {
    $chkBox1 = '0';
}

但是,如果要读取复选框的值,则应能够执行以下操作:

if (isset( $_POST['chkBox1'])) {
    if ($_POST['chkBox1'] == 'chkBox1Selected') {
        $chkBox1 = '0';
    }
}

或者,更简洁地说:

if( isset( $_POST['chkBox1']) && ($_POST['chkBox1'] == 'chkBox1Selected')) {
        $chkBox1 = '0';
}