获取从复选框返回的true/false值,false时出错


getting true/false value returned from a checkbox, error when false

请注意,我才刚刚开始学习php。我已经学习了一些不同的多日教程,现在我正尝试自己编写一个小的邮件列表脚本。我敢肯定,这是一个简单得离谱的问题/答案,但我想不出如何用词来表达这个问题,却没有在谷歌上找到任何结果。

我有一个名为"htemail"的复选框,当我把它发送到脚本时,我有这样的代码:

if(!$_POST['htemail']){
  $usehtml = 0;
}else{
  $usehtml = 1;
}
echo($usehtml);

如果复选框被选中,它会返回1,但如果不是,我会得到以下错误:

注意:未定义的索引:htemail-inC: ''wamp''www''邮件list''createUser.php在线7呼叫堆栈#TimeMemoryFunctionLocation10.0004673576{main}()。。''createUser.php:0 0。

我想做的第一件事是向后翻转代码,这样它就可以先检查是否存在检查(我不确定为什么我认为这会有帮助)

提前感谢您的回答。

如果不检查,浏览器可能不会包含在发布数据中。使用函数isset对其进行检查。如果未设置,则表示未检查,反之则不为true,如果设置,则可能仍然为false。

if(isset($_POST['htemail']) && $_POST['htemail'] == "Value"){ //where "Value" is the
          //same string given in the HTML form, as value attribute the the checkbox input
  $usehtml = 1;
}else{
  $usehtml = 0;
}

作为isset的替代方案,您可以使用array_key_exists

您想要的是检测数组成员的存在,然后检查其内容:

$usehtml = 0;
if (isset($_POST['htemail']) && strtolower($_POST['htemail']) == 'yes'){
    $usehtml = 1;
}
echo($usehtml);

isset()检查以确保数组成员存在,在这种情况下,您可以检查以确保该值计算为所需值。

此外,上面我已经命令评估默认为值(0),然后如果存在另一个变量,则更改为另一个值。这样做和if/else语句之间确实没有太大区别,但我认为阅读和理解起来更干净。