我会在复选框前添加一个同名的隐藏输入字段:
<input type="hidden" name="email_opt_in" value="0" />
由于表单是按顺序处理的,因此如果表单已提交,则会得到“0”,但未选中复选框(而不是什么都没有)。
然后假设如果表单未提交或已提交且复选框已选中,则复选框已选中:
$checked = !isset($_POST[\'email_opt_in\'])
|| (isset($_POST[\'email_opt_in\']) && $_POST[\'email_opt_in\']);
稍后:
... <?php checked($checked); ?>
整个想法是存储复选框的未选中状态,以防输入错误,因此如果用户不想在第一次提交时再次检查,则无需再次检查。
很抱歉,对于这个简单的问题,我给出了冗长而乏味的答案:)