Posted on

PHP小ネタ @の意味

PHPのサンプルソースをネット上で検索していると、自分が普段使わない言語機能を使っているソースに出くわすことがあります。

たとえば、以下のようなソースの@の意味、すぐに分かりますでしょうか?

$val = @$data[$key];

僕は正直、意味がまったく分かりませんでした。

ポインタのアドレス参照でもないしなー、と思ってネット上で調べようとしたところ、これがなぜだか分からない……
そもそもこの@が文法上のどのカテゴリに入るものなのかがわからなかったので、うまくヒットする検索が中々出来なかったのですね。

結果を言いますと、この@は、

エラー制御演算子

というものでした。

式の前に@をつけた場合、その識により生成されたエラーメッセージは無視されるそうです。

PHPマニュアル エラー制御演算子

例で示した式の場合、配列$dataの中に$keyがインデックスとして存在していなくても、エラーにはなりません。

本筋としてはエラーはしっかりハンドリングすべきなので、多用すべきものではないかもしれませんが、PHPの文法上許されることなので、知識として持っておいてもいいと思います☆