PHPの関数や変数の前にあるアットマークの意味は?

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は表示されません。

echo @$a;
スポンサーリンク

PHP・WordPress修正サポートのご案内

PHP修正サポートへの問い合わせ

PHP修正サポートへのお問い合わせはこちらからお願いします。

PHPの基礎が身に付いたかチェック!

PHP「直す力」養成ドリル