所以,如果我有这个代码:
$bla = 1;
if($foo && $bla) do_whatever...
Run Code Online (Sandbox Code Playgroud)
我收到通知告诉我这$foo是一个未定义的变量.
所以我必须将我的代码更改为:
$bla = 1;
if(isset($foo) && $foo && $bla) do_whatever...
Run Code Online (Sandbox Code Playgroud)
无论如何,我可以避免检查变量是否已分配并假设变量为false,但不必关闭PHP通知?
通知的全部内容是告诉您某些事情可能是错误的(例如写作$fooo而不是$foo).所以,如果你不打算使用它们,你也可以禁用它们.您可以通过设置自己的错误处理程序来选择性地禁用通知,并在它是"未定义的变量"类型时静默地丢弃该错误.
当然,干净的事情是首先定义变量.
根据您想要的确切行为,您可以检查变量是否为空():
如果var具有非空和非零值,则返回FALSE.
以下内容被认为是空的:
""(空字符串)0(0作为整数)"0"(0作为字符串)NULL FALSE array()(空数组)var $ var; (声明的变量,但在类中没有值)
理解所有这些案例很重要,但它是方便的语言结构.如果$ foo未定义if($foo)将抛出通知,但if(!empty($foo))不会 - 表达式将评估为false
但是,这不应该被滥用.正如其他人所说,这些通知是为了保护您的,所以如果您可以定义变量,则应该这样做.其中empty()特别方便的地方就是if (!empty($_GET['foo']))- 测试superglobals中输入的存在.