以下代码有效,但我不确定它是否有效:
// It should print $param or $_GET['uuu'] if isset:
function test($param) {
echo @$_GET['uuu'] ? $_GET['uuu'] : $param;
}
test('param');
Thanx任何建议。
答案 0 :(得分:6)
如果它不是有效,它就不会工作。
使用@
代替isset()
来节省击键或使代码看起来更干净是非常可怕的做法,因为这不是它的作用。它的作用是尝试访问变量而不管它是否已设置,并且如果变量不存在则禁止不可避免地出现的E_NOTICE
。
所以不要使用@
来检查变量,因为它不是为此目的而设计的。使用符合此目的的isset()
:
echo isset($_GET['uuu']) ? $_GET['uuu'] : $param;
答案 1 :(得分:3)
@
不存在, $_GET['uuu']
会禁止显示警告消息。这通常不是推荐的做法,因为它会回避可能对您有用的错误消息。例如,在这个例子中,我不知道$_GET['uuu']
是否真的没有设置,或者我的html中有form
错误没有向服务器发送uuu
。
答案 2 :(得分:2)
@符号仅用于忽略错误和警告。使用它不是好习惯。我建议您尝试使用 NOT 。
至于功能,它是有效的。