PHP& @:这有效吗?

时间:2012-08-23 01:38:34

标签: php

  

可能重复:
  Reference - What does this symbol mean in PHP?

以下代码有效,但我不确定它是否有效:

// It should print $param or $_GET['uuu'] if isset:

function test($param) {
    echo @$_GET['uuu'] ? $_GET['uuu'] : $param;

}

test('param');

Thanx任何建议。

3 个答案:

答案 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

至于功能,它是有效的。