• ベストアンサー

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"]の部分は必要ないように思います。なぜこのような書き方をしているのでしょうか?

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

  • ベストアンサー
回答No.1

 isset($_POST["body"])では値が入っているかどうかを調べていますが、値が何であるかは問いません。その値を判定しているのが二つ目の式です。  PHPの論理判定では値が0の時に偽になり、それ以外の時は真になります。つまり、$_POST["body"]の値が0かどうかを判定しています。($_POST["body"] != 0)と同じです。  判定式全体では、$_POST["body"]に0以外の値が入っている時に真になり、値が入っていないか0の時に偽になります。

ghfjri
質問者

お礼

回答ありがとうございます。 わかりました。Rubyとは違うんですね。

その他の回答 (2)

  • t140
  • ベストアンサー率39% (59/150)
回答No.3

もし未定義の変数(メモリ上に確保されていない)を直接if文で評価したら 設定によっては警告がでてしまいます。 そこで関数ではない言語構造であるisset()やempty()で評価することで警告を回避できます。 if ($foo) ←これは未定義なので警告を出す $foo = null; // null値を含むなんらかの値を代入すると定義(メモリ確保)された状態になる if ($foo) ←これで警告を出さなくなる

ghfjri
質問者

お礼

回答ありがとうございます。 nullを含むんですか?nullにそんな使い方が出来るとは知りませんでした。

noname#243182
noname#243182
回答No.2

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'])) { /* 変数に対する処理を記述 */ }

ghfjri
質問者

お礼

回答ありがとうございます。 empty()の勉強になりました。

関連するQ&A

専門家に質問してみよう