【发布时间】:2010-12-23 16:21:17
【问题描述】:
我可以使用isset($var) 来检查变量是否未定义或为空。 (例如,检查之前是否设置过会话变量)
但设置变量后,如何将其重置为默认值,以使isset($var) 返回false?
【问题讨论】:
我可以使用isset($var) 来检查变量是否未定义或为空。 (例如,检查之前是否设置过会话变量)
但设置变量后,如何将其重置为默认值,以使isset($var) 返回false?
【问题讨论】:
从 php 7.2 开始,直接设置变量已被贬低。您不应该以这种方式使用它,而应该考虑使用 unset 。 https://www.php.net/manual/en/language.types.null.php
unset($v); 在检查变量是否为空或未设置时会产生相同的错误。
isset($v) === false
is_null($v) === false
【讨论】:
进一步解释:
虽然变量可以为空或不为空,但变量也可以说是已设置或未设置。
要将变量设置为空,您只需
$var = null;
这将使$varnull,等价于false、0等等。您仍然可以从$GLOBALS['var'] 获取变量,因为它仍然是定义/设置的。但是,要从全局和/或本地命名空间中删除变量,您可以使用
unset($var);
这将使$var 根本没有设置。您将无法在 $GLOBALS 中找到。
【讨论】:
正如 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)
【讨论】:
另外,您可以将变量设置为null:
<?php
$v= 'string';
var_dump(isset($v));
$v= null;
var_dump(isset($v));
?>
【讨论】:
$variable,将其设置为null 更适合我的目的。
使用unset($var);
【讨论】: