- ベストアンサー
if文でisset
isset()などを使わずに下記のように変数だけで条件を指定するとまずいですか? isset()などをつかった場合の違いはなんでしょうか? if($_SESSION['id']){ print "hoge"; }
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
noname#244856
回答No.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でチェックされることを強く推奨します。
お礼
お答え頂きありがとうございます 未定義のときにエラーになるんですね なるべくissetやemptyを使うようにします