代码之家  ›  专栏  ›  技术社区  ›  adamJLev

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

php
  •  2
  • adamJLev  · 技术社区  · 17 年前
    <?php
        $var = NULL;
    
        var_dump(isset($var)); // bool(false)
        var_dump(isset($unset_var)); // bool(false)
    ?>
    

    isset($var)应该返回TRUE,因为它已设置为NULL。

    有办法检查一下吗?

    谢谢!

    6 回复  |  直到 17 年前
        1
  •  7
  •   Mainegreen    17 年前

    使用get_defined_vars()获取当前作用域中定义的变量数组,然后使用array_key_exists()对其进行测试;

    编辑:

    如果你想要一个函数来测试存在性,你可以创建一个这样的函数:

    function varDefined($name,$scope) {
      return array_key_exists($name, $scope);
    }
    

    并在任何给定范围内这样使用:

    $exists = varDefined('foo',get_defined_vars());
    

    应该适用于任何范围。

        2
  •  1
  •   user42092 user42092    17 年前

    不是很漂亮,但是。..

    array_key_exists('var', $GLOBALS);
    

    (您不能使用 @is_null($var) ,因为无论哪种方式,它的计算结果都是true[使用@运算符来抑制错误并不是一种很好的做法…])

        3
  •  0
  •   chaos    17 年前

    如果是全球性的,你可以这样做:

    if(array_key_exists('var', $GLOBALS))
    
        4
  •  0
  •   Cal    17 年前

    如果它在全局范围内,您可以尝试检查该键是否存在于$GLOBALS超全局中(使用array_key_exists())。

    但如果你需要知道这一点,你可能做错了什么:)

        5
  •  -1
  •   benlumley    17 年前

    任何未设置的var都将计算为null:

    php > $a = null;
    php > var_dump($a === null);
    bool(true)
    php > var_dump($a === $b);
    bool(true)
    

    (使用交互式控制台-php-a)

        6
  •  -1
  •   twk Mark Adler    17 年前

    默认情况下,变量不是初始化为NULL吗?所以,一个没有初始化的和一个设置为NULL的之间并没有什么区别。

    推荐文章