PHP - 将"undefined check"技巧包装在函数中?



我需要能够在PHP中区分纯粹未定义的变量和空变量。PHP 使得这很难做到这一点。下面的链接解释了困境:

https://stackoverflow.com/a/14309841/3163495

在该链接中,有一个技巧可以查看变量是否真正未定义,或者只是设置为 NULL:

。有一个技巧可以与"紧凑"一起使用,允许您 确定是否已定义变量,即使其值为 null:

var_dump(!!compact('noSuchVariable')); // false
var_dump(!!compact('nullVariable')); // true

这个技巧本身效果很好,但是当你尝试将其包装在这样的函数中时,它会中断:

function IsDefined(& $variable){
return (!!compact('variable'));
}

上面的函数 IsDefined 总是返回 true,无论我传递什么形式的未定义变量。请注意$variable参数旁边的"&"符号 - 我是通过引用传递的,否则 PHP 将抛出"未定义的变量"错误。

如何将上面提到的"未定义检查"技巧放入可重用的函数中?

从注释中,您不需要任何变量的解决方案,只需要会话变量的解决方案。会话变量不是真正的变量,它们是关联数组的元素。因此,您可以使用array_key_exists()功能。

function sessionVarDefined($varname) {
return array_key_exists($varname, $_SESSION);
}

然后你可以写

if (sessionVarDefined('MyVariable') {
...
}

最新更新