Php “如果(isset($\u SESSION))`和“如果($\u SESSION)”之间的区别是什么?

Php “如果(isset($\u SESSION))`和“如果($\u SESSION)”之间的区别是什么?,php,if-statement,isset,Php,If Statement,Isset,我注意到人们经常只是简单地写 <?php if($_SESSION['username']) {...} ?> 我一直在使用: <?php if(isset($_SESSION['username'])) {...} ?> 在PHP中,如果变量不存在(未设置),PHP将抛出一个E\u通知错误,创建缺少的变量,并将其分配给NULL 如果您不希望脚本中充满令人讨厌的错误消息,这些消息会泄露有关服务器和脚本的信息,请在尝试访问值之前使用isset()进行测试

我注意到人们经常只是简单地写

<?php  if($_SESSION['username']) {...} ?>

我一直在使用:

 <?php if(isset($_SESSION['username'])) {...} ?> 


在PHP中,如果变量不存在(未设置),PHP将抛出一个
E\u通知
错误,创建缺少的变量,并将其分配给
NULL

如果您不希望脚本中充满令人讨厌的错误消息,这些消息会泄露有关服务器和脚本的信息,请在尝试访问值之前使用
isset()
进行测试


基本上,您要求PHP从
$\u会话
中获取
用户名
,PHP就像“没有
用户名

假设您将变量=设置为false

$variable = false;
这不会返回任何内容,因为它确保变量不为null、false或空(“”)

无论我们将变量设置为什么,只要我们将其设置为。。。它可以是false,str,int,除null以外的任何值

if(isset($variable)){
    echo'something';
}

根据PHP.net,isset()执行以下操作:

确定变量是否已设置且不为空

写作时:

<?php  if($_SESSION['username']) {...} ?>
正如您所看到的,未设置变量/空变量被认为是错误的。因此,通过测试$\u SESSION元素是否为true,您还可以确定它是否存在

另一方面,Isset实际上检查变量是否存在。如果您想知道是否有同名的会话变量,请使用isset(),因为测试该变量是否为真/假并不取决于该变量是否存在

此外,请看以下示例:

$_SESSION['a'] = FALSE;
if($_SESSION['a']){
echo 'Hello'; //This line is NOT echo'd.
}

if(isset($_SESSION['b'])){
echo 'Hello'; //This line is NOT echo'd because $_SESSION['b'] has not been set.
}

除了可能的调试通知之外,第一个还检查包含值的布尔值,而不仅仅是存在。我猜上面代码的作者(没有isset())已经将变量添加到了_SESSION中并“知道”(哈哈!)除了那些
E\u注意
错误在开发中很有用,因为它们可以识别变量名中的拼写错误。谢谢!因此,如果您只想检查它是否为“0”或空白,那么使用if($var)是否更有用?@DankPiff,基本上,如果您毫无疑问地知道变量存在(因为您刚刚创建了它),那么您可以像
if($var)
那样直接使用它。如果您不确定,那么首先需要使用
If(isset($var))
If(empty($var))
进行测试,这样PHP就知道缺少的值是可以的,并且您不需要一条令人讨厌的错误消息。因此,当您只想检查If($variable)是否为false或empty时,使用If($variable)非常有用,当变量的内容可能为“0”或甚至设置为空时,isset很有用?我通常只使用isset检查变量是否已提交,如检查表单是否已提交。。。
the boolean FALSE itself
the integer 0 (zero)
the float 0.0 (zero)
the empty string, and the string "0"
an array with zero elements
an object with zero member variables (PHP 4 only)
the special type NULL (including unset variables)
SimpleXML objects created from empty tags
$_SESSION['a'] = FALSE;
if($_SESSION['a']){
echo 'Hello'; //This line is NOT echo'd.
}

if(isset($_SESSION['b'])){
echo 'Hello'; //This line is NOT echo'd because $_SESSION['b'] has not been set.
}