我可以使用isset($var)
来检查变量是否未定义或为null。 (例如,检查之前是否设置了会话变量)
但是在设置变量后,如何将其重置为默认值,以便isset($var)
返回false
?
答案 0 :(得分:37)
使用unset($var);
答案 1 :(得分:21)
正如nacmartin所说,unset
将“取消定义”一个变量。您也可以将变量设置为null,但这是两种方法的不同之处:
$x = 3; $y = 4;
isset($x); // true;
isset($y); // true;
$x = null;
unset($y);
isset($x); // false
isset($y); // false
echo $x; // null
echo $y; // PHP Notice (y not defined)
答案 2 :(得分:16)
进一步解释:
虽然变量可以为null或不为null,但也可以说变量已设置或未设置。
将变量设置为null,只需
$var = null;
这会使$var
null ,相当于false
,0
等等。您仍然可以从$GLOBALS['var']
获取变量,因为它仍然是定义/设置的。但是,要从全局和/或本地名称空间中删除变量,请使用
unset($var);
这将使$var
根本不设置。您将无法在$GLOBALS
中找到。
答案 3 :(得分:1)
此外,您可以将变量设置为null
:
<?php
$v= 'string';
var_dump(isset($v));
$v= null;
var_dump(isset($v));
?>
答案 4 :(得分:0)
从php 7.2开始,直接设置变量已弃用。您不应以这种方式使用它,而应考虑使用unset。 https://www.php.net/manual/en/language.types.null.php
unset($v);
在检查变量是否为null或未设置时将导致相同的false。
isset($v) === false
is_null($v) === false