• ベストアンサー

ISSETで変数に値が入っていないか確認するのですが

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

  • jyuu
  • お礼率83% (553/665)
  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.1

isset は変数に値があるかどうかではなくて、変数が存在するかどうかです。 echo isset($a); // false $a = ''; echo isset($a); // true 値を検証したい時は、 !empty($a) や $a !== null や $a !== '' 等状況に合わせてどうぞ。

jyuu
質問者

お礼

ありがとうございます。勉強になりました。

関連するQ&A

  • issetで変数チェック

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

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

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

    • ベストアンサー
    • PHP
  • 関数の引数に未定義の変数を渡すとエラーが出る

    自作の関数で、issetとemptyを一緒に判定する関数を作っているのですがエラーが出ます。 ある変数が「未定義」または「null」または「""(空白)」の場合はnullである、という関数を作りたいです。 ------------------------------------------ function is_null_ex($value){  if (!isset($value)) {return true;}               // 未定義かnullの場合、trueを返す  else if (strlen(strval($value)) === 0) {return true;}   // 空白の場合はtrueを返す  else {return false;}                      // $valueに値が入っている場合はfalseを返す } is_null_ex($val); ------------------------------------------ 上記の関数で$valueが未定義の場合にfuncを使うと、次のようなエラーが出ます。 Notice: Undefined variable: val つまり、未定義の変数を引数に渡すとエラーが出ます。 「未定義なら関数に渡さなければ?」と思うかもしれませんが、そもそもこの関数は「未定義」または「null」または「""(空白)」を判定したい関数なのです。 この場合、どうすれば良いのでしょうか? エラーは出ますが上記の関数で「if (!isset($value)) {return true;}」の部分できちんと判定はされています。 PHP5.3系で運用しています。 ぞうぞよろしくお願い致します。

    • ベストアンサー
    • 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
  • includeしたファイルに変数を持ち込むには?

    hoge.phpでセットした変数を、そのあとにincludeした別ファイルに持ち込むことは出来るのでしょうか? 以下のような処理がしたいと思っているのですが、この状態でhoge.phpを実行すると$a=NULLとして処理されてしまいます。 inc.php  <?php    if ($a=="値") {     //TRUE処理    } else {     //FALSE処理    }  ?> hoge.php  <?php   $a = "値";   include "./inc.php";  ?>

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

    • ベストアンサー
    • PHP
  • PHP「FALSE」や「0」を使った条件文

    「if条件文」の()に「FALSE」や値「0」がはいると なにも考える事無く無条件に 「else」以降の条件が実行になるという決まりなのでしょうか? もしそうであれば条件分にする意味があるのでしょうか? 基本的な質問で申し訳ないのですが 実際に使われる分かりやすい簡単な例があれば ご紹介ください。 よろしくお願いいたします。 例1: if(FALSE){ echo "FALSEではない"; }else{ echo "FALSEです。"; } 例2: if(0){ echo "ゼロではない"; }else{ echo "ゼロです。"; } 例3:(特にこの例は何かおかしいような気がします) if(10-10){ echo "イフが実行"; }else{ echo "エルスが実行"; }

    • ベストアンサー
    • PHP
  • PHPで変数のデータ受け渡しについて

    HTMLで下記のようにして入力された データを次ページに受け渡し、 issetで変数に値が代入されていれば ifで分岐処理させたいのですが、 elseの処理しかできません。    <FORM action="次ページ.php" method="GET">    キーワード<BR>    <INPUT type="text" name="keyword">    <INPUT type="submit" value="ボタン"> ボタンをクリックしたら次ページで    if (isset($keyword)) {     分岐処理1;     }    else{     分岐処理2;     } と行いたいのですが、$keywordに値が 代入されているにも関わらず elseの処理がされてしまいます。 どこか構文が間違っているのでしょうか。 どうか教えてください。

    • ベストアンサー
    • PHP
  • 変数に保持している値はどうやったら確認できるの?

    Publicで宣言した変数はブックを閉じるまで値を保持すると言うけど、 その保持している値はどうやったら確認できるのですか? 例えば標準モジュールに ++++++++++++++++++++++++++++++ Option Explicit Public a As String Sub test() a = "こんにちは" End Sub ++++++++++++++++++++++++++++++ とした場合、 1回testを実行すると、a には "こんにちは"が入りますよね。 この時例えばトイレに行って、パソコンの前に戻ってきたときに、 「aに何の値がはいってたっけ?」ってどうやって確認すればいいのでしょうか? testを実行する前に、ウォッチ式にaを登録しましたが、 testを実行し終わるとaの値は「対象範囲外」になっています。 でもこの状態でもaの値は保持されてるのですよね? 発見したのは、testをF8でステップインをすると、 2行目のa = "こんにちは"を通過する前に、aにすでに値が入ってる事がわかりました。 こういう方法で確認するしかないのでしょうか?

専門家に質問してみよう