プロが教えるわが家の防犯対策術!

isset()などを使わずに下記のように変数だけで条件を指定するとまずいですか?
isset()などをつかった場合の違いはなんでしょうか?

if($_SESSION['id']){
print "hoge";
}

A 回答 (1件)

http://ideone.com/k60gaK

未定義のときにNoticeエラーとなります。

・変数が未定義 … Undefined Variables
・配列のオフセット(int)/インデックス(string)が未定義 … Undefined Offset / Index
・オブジェクトのプロパティが未定義 … Undefined Property

マニュアルを見れば分かりますが、issetとemptyは関数ではなく、「言語構造」であることに注目。
これらの構造は「エラーを出力せずに変数の存在を確認」することが出来ます。

エラー出力の有無を除けば、

if ($var !== NULL) は if (isset($var))
if ($var) は if (!empty($var))

と等価です。

※ issetは同時に複数の変数をチェックすることが可能
※ issetもemptyも確認できるのは「変数」だけで、「値」そのものを渡すとエラーになる。(PHP5.5以上のemptyを除く)


error_reporting = E_ALL ^ E_NOTICE

に設定されている場合はNoticeエラーは出力されませんが、それでもエラーは発生しているので動作は遅くなります。多少面倒でもissetやemptyでチェックされることを強く推奨します。
    • good
    • 0
この回答へのお礼

お答え頂きありがとうございます

未定義のときにエラーになるんですね

なるべくissetやemptyを使うようにします

お礼日時:2013/05/26 02:52

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