我需要能够在纯粹未定义的变量和空变量之间进行区分。 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将抛出一个“未定义的变量”错误。
如何将上面提到的“未定义检查”技巧转化为可重用的工作函数?
你为什么要这么做?如果你必须经常这样做以至于你需要一个函数,那么你的代码似乎有问题。 – Barmar
它们是否总是您需要检查的全局变量?你可以测试'isset($ GLOBALS [$ varname])' – Barmar
@Barmar不,它们不会是全局变量,它们将是我将尝试通过引用传递给函数的变量IsDefined – user3163495