所以如果我有这个代码:
$bla = 1;
if($foo && $bla) do_whatever...
我收到通知,告诉我$foo
是一个未定义的变量。
所以我必须将我的代码更改为:
$bla = 1;
if(isset($foo) && $foo && $bla) do_whatever...
无论如何,我可以避免检查是否已分配变量并假设变量为false,但不必关闭PHP通知?
答案 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...
@将禁止警告。
但你真的不应该这样做。不检查你的所有输入都是错误的。