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.
}