PHP - isset($ variable)和通知

时间:2010-12-11 21:20:45

标签: php

所以如果我有这个代码:

$bla = 1;    
if($foo && $bla) do_whatever...

我收到通知,告诉我$foo是一个未定义的变量。

所以我必须将我的代码更改为:

$bla = 1;
if(isset($foo) && $foo && $bla) do_whatever...

无论如何,我可以避免检查是否已分配变量并假设变量为false,但不必关闭PHP通知?

5 个答案:

答案 0 :(得分:5)

通知的全部内容是告诉您某些内容可能有误(例如写$fooo而不是$foo)。所以,如果你不打算使用它们,你也可以禁用它们。您可以通过设置自己的错误处理程序来选择性地禁用通知,并在它是“未定义的变量”类型时静默地丢弃该错误。

当然,干净的事情是首先定义你的变量。

答案 1 :(得分:5)

根据您想要的确切行为,您可以检查变量是否为empty()

  

如果var具有非空,则返回FALSE   和非零值。

     

考虑以下事项   是空的:

     

“”(空字符串)0(0作为   整数)“0”(0作为字符串)NULL   FALSE array()(一个空数组)var   是$ var; (声明的变量,但是   在课堂上没有价值)

理解所有这些案例很重要,但它是方便的语言构造。如果$ foo未定义if($foo)将发出通知,但if(!empty($foo))不会 - 表达式将评估为false

不应滥用。正如其他人所说,这些通知是为了保护您的,所以如果您可以定义变量,则应该这样做。其中empty()特别方便的是if (!empty($_GET['foo']))之类的东西 - 测试超全局中输入的存在。

答案 2 :(得分:4)

不,没有。

答案 3 :(得分:2)

不,你应该总是确切地知道变量发生了什么。实际上,您根本不需要对变量本身使用isset()

答案 4 :(得分:0)

你可以这样做:

if(@$foo && $bla) do_whatever...

@将禁止警告。

但你真的不应该这样做。不检查你的所有输入都是错误的。