• ベストアンサー

「@$変数」の「@の意味は?」

PHPの勉強中です。 サンプルプログラムを見ていて以下の「@」の意味がわかりません。 ------------------- // 入力内容を取得する $text1 = @$_POST["text1"]; if (strlen(@$text1) < 4 or strlen(@$text1) > 8) { echo "<p>4~8文字以内でお願いします"; } --------------------- マニュアルには「式の先頭につけるとエラーを非表示」と有りますが、変数の前につけるのはどういう意味があるのでしょうか? 試しに@を全て消しても同じ結果でした。 アドバイスよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • nicolish
  • ベストアンサー率72% (13/18)
回答No.1

$_POST["text1"]; は、配列$_POSTに"text1"をキーとする値が無かったらエラー(E_NOTICE)になる。 $test1 = @$_POST["text1"]; とすると、E_NOTICEが出ない(この場合、$text1にはnullが入る)。 勉強中ならば、ソースコードの先頭に error_reporting(E_ALL); と宣言したほうがいい。初期設定だとE_NOTICEレベルのエラーはどこにも表示されず、どこにも出力されないからな。 E_ALLにしておくと、NOTICEが見えるようになるから、@が無い時にどういう動作をするか分かるはず。 <?php error_reporting(E_ALL); $array = array('hoge' => 'fuga'); $text1 = $array['key']; $text2 = $var; ?> //Notice: Undefined index: key in C:\xampp\htdocs\test.php on line 4 //Notice: Undefined variable: var in C:\xampp\htdocs\test.php on line 5

tantamu
質問者

お礼

早速の回答有り難うございました。 さすが専門家ですね。助かります☆ 特に「error_reporting(E_ALL);」は勉強になりました。 ホントにつけた方が良さそうですね(^_^;

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4901/10362)
回答No.2

変数も式です。

tantamu
質問者

お礼

なるほど…No1の人の回答も含めよくわかりました。 有り難うございました。

関連するQ&A