如果我得到一个变量而且我不知道它是否设置我可以写
if (isset($a) && $a > 2)
或者我可以写
if (@ $a > 2)
更短。 第二种语法是否良好?
答案 0 :(得分:15)
表达式if(@$a)
不检查变量是否已设置。 @符号只是表示任何警告,这是一种糟糕的编码风格。
答案 1 :(得分:10)
我 totally sympathize,但使用@
来抑制错误是不良做法。
错误仍然存在,它只会被抑制。然而,如果在循环中完成,它会花费很多时间来累积很多时间。
此外,您还可以利用“未定义变量”通知的优势:作为避免拼写错误的机制。
答案 2 :(得分:3)
第一种方法是正确的方法。第二种方法非常糟糕。你最终会被错误压制,你甚至都不会知道。有一天你会出现错误,你将无法调试那种糟糕的做法,。
答案 3 :(得分:2)
函数isset检查变量是否存在以及它是否为空。我不太确定你想用&&和$ A
@运算符会抑制由它所附加的表达式生成的错误消息。
答案 4 :(得分:2)
就像人们已经说过的那样,第一个变种是要走的路。 实际上我不喜欢(/ * * /&& $ var)变体来检查变量是否为空。我更喜欢使用
if (isset($var) && !empty($var)) {
/* foo */
}
或只是
if (!empty($var)) {
/* foo */
}