PHP 提供了 isset() 函数来判断变量是否存在。但是,正如文档中提到的,它无法区分未设置的变量和设置为 NULL 的变量。
有限制的替代方法
克服此限制的一种尝试是:
<code class="php">if (isset($v) || @is_null($v)) {...}</code>
但是 is_null() 也面临着类似的问题,对于未设置的变量返回 TRUE。此外,@($v === NULL) 的行为与@is_null($v) 相同,使其无法使用。
可靠的解决方案:array_key_exists()
For检查变量是否存在的可靠方法是考虑 array_key_exists()。当应用于全局变量时,它可以有效地区分不存在的变量和设置为 NULL 的变量。
演示区别
考虑以下示例:
<code class="php">$a = NULL; var_dump(array_key_exists('a', $GLOBALS)); // TRUE var_dump(array_key_exists('b', $GLOBALS)); // FALSE</code>
输出表明 array_key_exists() 准确地识别了 $a 的存在,即使它设置为 NULL。
结论
而 isset() 和is_null() 为变量存在性测试提供部分支持,array_key_exists() 提供更精确、更全面的解决方案。此方法可以正确区分全局和局部范围内未设置的变量和设置为 NULL 的变量。
以上是如何可靠地测试 PHP 中的变量是否存在?的详细内容。更多信息请关注PHP中文网其他相关文章!