![](/img/trans.png)
[英]Check if session has been started and set global var for javascript to use
[英]PHP: How to check if a var has been initiliazed? isset returns false when the var has been set to NULL
<?php
$var = NULL;
var_dump(isset($var)); // bool(false)
var_dump(isset($unset_var)); // bool(false)
?>
isset($ var)应该返回TRUE,因为它已设置为NULL。
有什么办法可以检查吗?
谢谢!
使用get_defined_vars()获取当前作用域中定义的变量数组,然后使用array_key_exists()对它进行测试;
编辑:
如果您想要一个功能来测试存在性,则可以这样创建一个:
function varDefined($name,$scope) {
return array_key_exists($name, $scope);
}
并在任何给定范围内像这样使用:
$exists = varDefined('foo',get_defined_vars());
应该适用于任何范围。
不是很漂亮,但是...
array_key_exists('var', $GLOBALS);
(您不能使用@is_null($var)
,因为它的任何一种方式都评估为true [并且使用@运算符抑制错误并不是一种很好的做法。]
如果它在全局范围内,则可以尝试检查密钥是否在$ GLOBALS超全局变量中存在(使用array_key_exists())。
但是,如果您需要了解这一点,则可能是在做错什么:)
如果是全球性的,则可以执行以下操作:
if(array_key_exists('var', $GLOBALS))
任何未设置的var都将评估为null:
php > $a = null;
php > var_dump($a === null);
bool(true)
php > var_dump($a === $b);
bool(true)
(使用交互式控制台-php -a)
变量默认不是初始化为NULL吗? 因此,尚未初始化的项与您设置为NULL的项之间并没有什么区别。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.