PHPスクリプトを見ていると関数の前に「@」(アットマーク)が付いているのをみたことがありませんか?
<?php @file_get_contents("input.txt");
この「@」の用途はエラーを非表示にすることです。「エラー制御演算子」とよばれます。
【参考】PHP: エラー制御演算子
ピンと来ない場合は@を取り除いて実行してみましょう。
<?php file_get_contents("input.txt");
「input.txt」が存在しない場合、次のようなエラーメッセージ(Warning)が表示されます。ファイルが存在しないので開けない、という警告です。
実行結果
PHP Warning: file_get_contents(input.txt): failed to open stream: No such file or directory in …略….php on line 2
Warning: file_get_contents(input.txt): failed to open stream: No such file or directory in …略….php on line 2
もう一度@を付けて実行してみましょう。
<?php @file_get_contents("input.txt");
今度は「input.txt」が存在しなくてもエラーメッセージが表示されないはずです。これはエラーがなくなったのではなく、非表示にしただけです。その点、注意してください。
変数の前にある@も同じです。次のコードを実行すると、$aが存在しない場合はエラーメッセージが表示されます。
echo $a;
実行結果
PHP Notice: Undefined variable: …略….php on line 3
Notice: Undefined variable: …略….php on line 3
Notice: Undefined variable: …略….php on line 3
変数の前にアットマークを付けると上記のNoticeは表示されません。
echo @$a;