考虑到:
>如果设置了变量而不是NULL,则isset()构造返回TRUE
>如果未设置变量,is_null()函数将发出警告
有没有办法测试变量是否存在,无论它是否为NULL,而不使用@运算符来抑制通知?
编辑
连同你的第一个回复,我一直在考虑这个,我得出的结论是检查get_defined_vars()是区分变量设置为NULL和未设置变量的唯一方法. PHP似乎没什么区别:
<?PHP $exists_and_is_null = NULL; // All these are TRUE @var_dump(is_null($exists_and_is_null)); @var_dump(is_null($does_not_exist)); @var_dump($exists_and_is_null===NULL); @var_dump($does_not_exist===NULL); @var_dump(gettype($exists_and_is_null)=='NULL'); @var_dump(gettype($does_not_exist)=='NULL'); ?>
$result = array_key_exists('varname',get_defined_vars());