我注意到人们经常简单地写
<?php if($_SESSION['username']) {...} ?>
虽然我一直在使用:
<?php if(isset($_SESSION['username'])) {...} ?>
有人可以在检查是否设置变量时解释差异(这就是我使用它的目的)吗?
我注意到人们经常简单地写
<?php if($_SESSION['username']) {...} ?>
虽然我一直在使用:
<?php if(isset($_SESSION['username'])) {...} ?>
有人可以在检查是否设置变量时解释差异(这就是我使用它的目的)吗?
在 PHP 中,如果一个变量不存在(“未设置”),那么 PHP 将吐出一个E_NOTICE
错误,创建缺少的变量,并将其分配给NULL
.
如果您不希望您的脚本充满恼人的错误消息,这些错误消息会泄漏有关您的服务器和脚本的信息 - 然后isset()
在尝试访问值之前使用测试。
基本上,您是在要求 PHPusername
退出,$_SESSION
而 PHP 就像是“没有username
”!
根据 PHP.net,isset() 执行以下操作:
确定变量是否已设置且不为 NULL。
写作时:
<?php if($_SESSION['username']) {...} ?>
您正在检查 $_SESSION['username'] 是否等于 true。换句话说,您正在检查该值是否不等于 false。
根据PHP.net,以下内容被视为 FALSE:
转换为布尔值时,以下值被视为 FALSE:
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
如您所见,未设置的变量/ NULL 变量被视为 FALSE。因此,通过测试 $_SESSION 元素是否为真,您还可以确定它是否存在。
另一方面,Isset 实际上检查变量是否存在。如果您想知道该名称是否存在 SESSION 变量,请使用 isset() 测试它的 TRUE/FALSE 不依赖于变量是否存在。
此外,请查看以下示例:
$_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.
}
假设您将变量 = 设置为 false ...
$variable = false;
这不会返回任何内容,因为它确保变量不为 null、false 或 empty('')...
if($variable){
echo'something';
}
无论我们将变量设置为什么,只要我们设置它,这将起作用……它可以是 false、str、int,除了 null 之外的任何值!
if(isset($variable)){
echo'something';
}