アプリ版:「スタンプのみでお礼する」機能のリリースについて

PHPの勉強中です。
サンプルプログラムを見ていて以下の「@」の意味がわかりません。

-------------------
// 入力内容を取得する
$text1 = @$_POST["text1"];

if (strlen(@$text1) < 4 or strlen(@$text1) > 8) {
echo "<p>4~8文字以内でお願いします";
}
---------------------

マニュアルには「式の先頭につけるとエラーを非表示」と有りますが、変数の前につけるのはどういう意味があるのでしょうか?

試しに@を全て消しても同じ結果でした。

アドバイスよろしくお願いします。

A 回答 (2件)

$_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
    • good
    • 0
この回答へのお礼

早速の回答有り難うございました。
さすが専門家ですね。助かります☆

特に「error_reporting(E_ALL);」は勉強になりました。
ホントにつけた方が良さそうですね(^_^;

お礼日時:2009/01/11 20:22

変数も式です。

    • good
    • 0
この回答へのお礼

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

お礼日時:2009/01/11 20:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!