繁体   English   中英

PHP:如何检查var是否已初始化? 当var设置为NULL时,isset返回false

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM