- ベストアンサー
if (isset($_POST["body"]) && $_POST
if (isset($_POST["body"]) && $_POST["body"])の中の&& $_POST["body"]って必要ですか? PHPのプログラムを読んでいて、以下のような部分を見つけました if (isset($_POST["body"]) && $_POST["body"]) しかし、どうせisset($_POST["body"])でnullかどうか、値が入っているかどうかを確めているので、&& $_POST["body"]の部分は必要ないように思います。なぜこのような書き方をしているのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
isset($_POST["body"])では値が入っているかどうかを調べていますが、値が何であるかは問いません。その値を判定しているのが二つ目の式です。 PHPの論理判定では値が0の時に偽になり、それ以外の時は真になります。つまり、$_POST["body"]の値が0かどうかを判定しています。($_POST["body"] != 0)と同じです。 判定式全体では、$_POST["body"]に0以外の値が入っている時に真になり、値が入っていないか0の時に偽になります。
その他の回答 (2)
- t140
- ベストアンサー率39% (59/150)
もし未定義の変数(メモリ上に確保されていない)を直接if文で評価したら 設定によっては警告がでてしまいます。 そこで関数ではない言語構造であるisset()やempty()で評価することで警告を回避できます。 if ($foo) ←これは未定義なので警告を出す $foo = null; // null値を含むなんらかの値を代入すると定義(メモリ確保)された状態になる if ($foo) ←これで警告を出さなくなる
お礼
回答ありがとうございます。 nullを含むんですか?nullにそんな使い方が出来るとは知りませんでした。
isset() は、変数がセットされていること、そして NULL でないことを検査します。 http://jp.php.net/manual/ja/function.isset.php ここで言うところの NULL とは、PHPの定数 NULL です。 http://jp.php.net/manual/ja/language.types.null.php 例えば、$_POST['body'] の内容が空文字であったとしても、isset() は TRUE となってしまうでしょう。 そこで変数が空であるかどうかを検査する必要があるのですが、これには empty() を使います。 http://jp.php.net/manual/ja/function.empty.php 変数がセットされており、値が空ではないことを確認したい場合、以下のように記述することをお勧めします。 if (isset($_POST['body']) and !empty($_POST['body'])) { /* 変数に対する処理を記述 */ }
お礼
回答ありがとうございます。 empty()の勉強になりました。
お礼
回答ありがとうございます。 わかりました。Rubyとは違うんですね。