d-_*_*_-b 6 php if-statement isset
我注意到人们常常只是写作
<?php if($_SESSION['username']) {...} ?>
Run Code Online (Sandbox Code Playgroud)
我一直在使用:
<?php if(isset($_SESSION['username'])) {...} ?>
Run Code Online (Sandbox Code Playgroud)
有人在检查变量是否设置时会解释差异(这就是我要使用的变量)吗?
Xeo*_*oss 10
在PHP中,如果变量不存在("未设置"),则PHP将吐出E_NOTICE错误,创建缺失的变量并将其分配给NULL.
如果您不希望脚本中充满烦人的错误消息,这些消息会泄漏有关您的服务器和脚本的信息 - 那么isset()在尝试访问值之前请先测试一下.
基本上,你要求PHP username退出,$_SESSIONPHP就像" 没有username "!
根据PHP.net,isset()执行以下操作:
确定变量是否已设置且不为NULL.
写作时:
<?php if($_SESSION['username']) {...} ?>
Run Code Online (Sandbox Code Playgroud)
您正在检查$ _SESSION ['username']是否等于true.换句话说,您正在检查该值是否不等于false.
根据PHP.net,以下被认为是错误的:
转换为布尔值时,以下值被视为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
Run Code Online (Sandbox Code Playgroud)
如您所见,未设置的变量/ NULL变量被视为FALSE.因此,通过测试$ _SESSION元素是否为true,您还可以确定它是否存在.
另一方面,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.
}
Run Code Online (Sandbox Code Playgroud)