【发布时间】:2009-02-06 19:20:15
【问题描述】:
<?php
$var = NULL;
var_dump(isset($var)); // bool(false)
var_dump(isset($unset_var)); // bool(false)
?>
isset($var) 应该返回 TRUE,因为它已被设置为 NULL。
有什么方法可以检查吗?
谢谢!
【问题讨论】:
标签: php
<?php
$var = NULL;
var_dump(isset($var)); // bool(false)
var_dump(isset($unset_var)); // bool(false)
?>
isset($var) 应该返回 TRUE,因为它已被设置为 NULL。
有什么方法可以检查吗?
谢谢!
【问题讨论】:
标签: php
使用 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),因为无论哪种方式它的计算结果都为真[并且使用@运算符抑制错误并不是一个很好的做法...])
【讨论】:
如果是全局的,你可以这样做:
if(array_key_exists('var', $GLOBALS))
【讨论】:
如果它在全局范围内,您可以尝试检查该键是否存在于 $GLOBALS 超全局中(使用 array_key_exists())。
但如果你需要知道这一点,你可能做错了:)
【讨论】:
任何未设置的 var 都将评估为 null:
php > $a = null;
php > var_dump($a === null);
bool(true)
php > var_dump($a === $b);
bool(true)
(使用交互式控制台 - php -a )
【讨论】:
变量不是默认初始化为NULL吗?因此,未初始化的和已设置为 NULL 的之间并没有真正的区别。
【讨论】: