• ベストアンサー

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

  • issetで変数チェック

    php初心者です issetで変数の中に値が入っているか調べたいのですがphp5.4でフォームから文字列を送るとfalseになってしまいます。 文字列が入っているかチェックしたいのですがどうしたらいいでしょうか? if(isset($_POST['title'])&&$_POST['title']!=''){ $title = $_POST['title']; }else{ $title = ''; } よろしくお願いします

    • ベストアンサー
    • PHP
  • if (isset($_a)&&$_a)この意味は

    PHP講座の第19回 スケジューラーを作ろう(9) - スケジューラー完成 - (その2) http://www.phppro.jp/school/phpschool/vol19/2 サンプルコードに下記のような書き方をしています。 if (isset($_POST["title"]) && $_POST["title"]) { isset($_POST["title"])では、$_POST["title"]そのものがあるのか、 また、$_POST["title"]=nullでないかをチェックしていると理解していますが、 その後の&& $_POST["title"]は、何のために指定しているのでしょうか。

    • ベストアンサー
    • PHP
  • isset関数の動作と入力チェックについて

    issetの動作について疑問に思った事があるので、質問させて下さい。 以下のようなテスト用のphpを作成しました。 issettest.php <?php $a = $_GET["a"]; if(isset($_GET["a"])){ echo "\$GETに[".$_GET["a"]."]が入っています。<br>"; } if(isset($a)){ echo "\$aに[".$a."]が入っています。<br>"; } if(!isset($_GET["a"])){ echo "\$GETは空です。<br>"; } if(!isset($a)){ echo "\$aは空です。<br>"; } ?> ./issettest.php と実行すると、 $GETの値は空です。 $aの値は空です。 ./issettest.php?a=test と実行すると $GETに[test]が入っています。 $aに[test]が入っています。 ./issettest.php?a= と実行すると $GETに[]が入っています。 $aに[]が入っています。 となります。 これがissetの正常な動作なのでしょうか? 例えば、入力フォームを使いGETやPOSTでの値を送信する場合、入力フォームに値が入力されたかどうかを判定するにはissetは使えないのでしょうか? わかりづらい質問で申し訳ありませんが、先輩方の回答お待ちしています。 質問に不備などありましたらご指摘下さい。

    • ベストアンサー
    • PHP
  • if(isset())について

    変数に画像ファイルがセットされているか確認にて、セットされていれば画像を出力、セットされていなければ「no image」の文字列を出力したいと思っているのですがうまくいきません。ご指導よろしくお願いします。 <?php if(isset($data[ $i ][ IMAGE ])){ ?> <img src="<?php print( $KameiInfo[ KAMEI_COL_IMAGE1 ] ); ?> width="70" height="55" > <?php }else{ print("no image") } ?>

    • ベストアンサー
    • PHP
  • issetの使い方

    こんにちは、 参考にしたサイトに下記文があったのですが $get_meta = isset($get_meta[0]) ? $get_meta[0] : null; issetで存在を確認するという意図だと思うのですが ? $get_meta[0] : null;この部分はどうゆう意味になるのでしょうか?

    • ベストアンサー
    • PHP
  • ISSETで変数に値が入っていないか確認するのですが

    ISSETで変数に値が入っていないか確認するのですが <? $a = ''; if (isset($a)) { echo "何か入っています。"; } else { echo "空っぽです。"; } ?> 上のコードで「何か入っています。」がエコーされてしまいます。issetは値が入っていなければFALSEを返すと思ったのですが違うようなのでちょっと混乱してしまったのですが、これがマニュアルに書いてある「NULL に設定されている変数を調べた場合、 isset() はFALSE を返します。 」、ということなのでしょうか?

    • ベストアンサー
    • PHP
  • POSTされたかどうか確かめる方法で…

    POSTされたかどうか確かめるために、今までは if ($_SERVER["REQUEST_METHOD"] == "POST") { } と書いていましたが、別に if (isset($_POST)) { } と書いても同じことでしょうか?? ちなみにPHP5.1.2です。

    • ベストアンサー
    • PHP
  • 「isset」の用法について

    「isset」は変数の存在を判定する関数ということですが 以下の場合だと同じ意味になると思うのですが それであれば「isset」を使わないほうがシンプルになると思います。 「isset」を使うにあたって何か特別な意味や 用法があるのでしょうか? ----------------------- if(isset($abc){ echo $abc; } と if($abc){ echo $abc; } は同じだと思うのですが。。。 ----------------------- よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPのif文「POSTしていない場合」

    PHPの初心者です。 HTMLのフォームでsubmitが押されたかの判定を if (isset($_POST['submit'])){ print"押されました"; }else{  print"押されてません"; } という、形でやってきたのですが、 yes側に押していない場合を設定してelse側に押した場合を記述したいのですが、if文で「submitが押されていなかったら」とはどのように書けばいいでしょうか?

    • ベストアンサー
    • PHP
  • postの使い方

    下記のようなコードで、$_POSTを使い、else以下の「test」を表示させたいと考えています。 http://*****.jp/?page_id=259&?id=reform しかし、上記のURLでアクセスした場合、<h2>商品ラインナップ</h2>が出力されます。 どのようにすればtestを表示することできるでしょうか? <!DOCTYPE html> <html> <body<?php body_class(); ?>> <?php if($_POST['id'] !== 'reform'): ?> <h2>商品ラインナップ</h2> <?php else: ?> test <?php endif; ?> </body> </html>