PHP&;@:这个有效吗


PHP & @: Is this valid?

可能重复:
参考-这个符号在PHP中是什么意思?

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

// It should print $param or $_GET['uuu'] if isset:
function test($param) {
    echo @$_GET['uuu'] ? $_GET['uuu'] : $param;
}
test('param');

谢谢你的建议。

如果它不是有效,它就不会工作

@代替isset()只是为了节省击键次数或使代码看起来更干净,这真的是一种可怕的做法,因为它不是这样做的。它所做的是尝试访问您的变量,而不管它是否设置为,并抑制在变量不存在时不可避免出现的E_NOTICE

所以不要使用@来检查变量,因为它不是为这个目的而设计的。使用isset(),它确实起到了这个作用:

echo isset($_GET['uuu']) ? $_GET['uuu'] : $param;

@在不存在$_GET['uuu']的情况下抑制警告消息。这通常不是推荐的做法,因为它会避开可能对您有用的错误消息。例如,在这个例子中,我不知道$_GET['uuu']是否真的没有设置,或者我的html中有form错误,没有将uuu发送到服务器。

@符号用于忽略错误和警告。使用它不是一个好的做法。我建议你尝试not使用它。

至于函数,它是有效的。