PHP中非常基本的问题 - 我已将变量设置为null,为什么我在结果中得到错误?
$a = null;
var_dump(isset($a)); // false
如果isset
不是我所追求的那个,我如何检查变量是否已设置?
我无法使用empty
,例如,
var_dump(empty($b)); // false
但$b
根本没有设置。
我可以在更有意义的javascript中做到这一点,
if (typeof variable !== 'undefined') ...
答案 0 :(得分:5)
isset
检查变量is set and not null
。所以是的,如果您正在检查的变量保持值false
,它将返回null
。事实上,不可能将不存在的变量与保持null
的变量区分开来。人们会建议各种各样的hackarounds,但它们都没有100%的时间工作。在PHP中,您无法区分这两种情况,即句号。
请注意,您可以使用更专业的方法来确定array keys或object properties的差异,这没问题。但普通变量难以区分。
话虽如此,你真的不应该进入你需要这种区别的情况。如果您正确初始化变量,则无需检查它们是否设置。 您完全控制程序中的所有变量,可以绝对确保它们存在时应该存在,因此您无需检查。如果PHP然后抱怨不存在的变量,你知道你有一个可以修复的错误。您不控制的所有输入都应以“来自外部”的数组或对象的形式出现,您可以详细检查并将null
与不存在的密钥区分开来。
答案 1 :(得分:0)
我找到了解决它的方法,但它看起来很难看,
$a = null;
$defined_vars = get_defined_vars();
var_dump(array_key_exists('a', $defined_vars)); // true