从复选框返回true / false值,为false时错误

问题描述

| 请注意,我才刚刚开始学习PHP。我经历了一些不同的为期多天的教程,现在我正尝试自己编写一个小的邮件列表脚本。我敢肯定,这是一个非常简单的问题/答案,但是我没有办法弄清楚该问题的措辞不会对Google产生任何影响。 我有一个名为\“ htemail \”的复选框,当我将其发送到脚本时,我具有以下代码
if(!$_POST[\'htemail\']){
  $usehtml = 0;
}else{
  $usehtml = 1;
}

echo($usehtml);
如果选中此复选框,则返回1,但如果不是,则会出现以下错误:   注意:未定义的索引:htemail在   C:\\ wamp \\ www \\ mailing   第7行的list \\ createuser.PHP调用   堆栈#TimeMemoryFunctionLocation   10.0004673576 {main}().. \\ createuser.PHP:0 0。 我想做的第一件事是将代码向后翻转,以便它首先检查检查的存在(我不确定为什么我认为这会有所帮助) 预先感谢您的任何答案。     

解决方法

        如果未选中,则浏览器可能不包含在帖子数据中。使用功能ѭ1进行检查。如果未设置,则表示未选中;反之,则为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;
}
作为“ 1”的替代,您可以使用array_key_exists     ,        您要检测的是数组成员的存在,然后检查其内容:
$usehtml = 0;

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

echo($usehtml);
isset()
检查以确保数组成员存在,在这种情况下,您可以检查以确保该值计算为所需的值。 此外,在上面,我已命令评估默认为默认值(0),然后如果存在另一个变量,则更改为另一个值。这样做与if / else语句之间确实没有太大区别,但是我认为阅读和理解起来更简洁。