if($ a == 4){ echo'ok'; }
现在显示错误,因为$ $未定义变量。 我的决定:
if(isset($a)){
if($a == 4){
echo 'ok';
}
}
但也许有更好的解决方案?
答案 0 :(得分:14)
我觉得这很好。如果您愿意,可以合并两个if
。
if (isset($a) && $a == 4) {
echo 'ok';
}
答案 1 :(得分:6)
您的解决方案是正确的,但如果您想要100%“干净”,那么您永远不必使用isset(),因为您的变量应始终在范围内。您应该在开头定义$ a = null,并检查它是否为空。
这是静态类型程序的工作方式(比如java)。但是,由于您使用的是PHP,因此您可以决定放宽这一点,并通过允许使用未定义的变量(这会使代码更脏,但更短且更易读)来使用PHP规则。它是由你决定。在这种情况下,更改php.ini中的错误报告不发出此类通知。
答案 2 :(得分:2)
理想情况下,您不应该这样做。如果$ a最初是在条件内创建的,而不是在所有情况下创建的,则应该声明它并在该条件之前将其设置为null。
比较
if(false)
{
$a = 4;
}
//...
if($a == 4){
echo 'ok';
}
要:
$a = null;
if(false)
{
$a = 4;
}
//...
if($a == 4){
echo 'ok';
}
是的,if (false)
永远不会将$ a设置为4.但是,第二个示例不会触发警告。
此外,我希望你 依赖于register_globals
。
否则,如果必须使用isset(),我会按照KennyTM的建议将调用合并到一个if语句中。
答案 3 :(得分:0)
以下解决方案较短,但很难看(即使经验丰富的程序员厌恶地逃跑的代码):
if (@$a == 4) // Don't show the warning in this line (*UGLY*)
echo 'OK';
或
error_reporting(error_reporting() & ~E_NOTICE); // Don't show any notice at all (*EVEN UGLIER*)
两者都被认为是不好的做法,因为你可能会错过一个不相关的通知,这可能是一些更深层次问题的症状。
答案 4 :(得分:0)
@
对PHP社区造成了很大的破坏。我无法计算调试和修复@
代码的时间。