• ベストアンサー

空文字列の扱い方

お世話になっています。 質問なのですが、 $a = 0; $b = ""; if ($a == $b){ echo "XXX"; } else{ echo "YYY"; } この式を実行すると、XXXが表示されます。 ちょっと予想外(ひょっとしたら、これが普通なのかもしれませんが・・・)だったので、HELPを見てみると http://php.s3.to/man/language.types.string.html(結構下のほうです。) のようなことが書いてありました。 もし、YYYを表示したかったら、どのようにすればいいのでしょうか? ちなみに、変数の値は変えたくはありません。 変な質問ですが、宜しくお願い致します。 環境: php:4.06 OS:RedHat7.2 以上です

  • PHP
  • 回答数3
  • ありがとう数4

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

  • ベストアンサー
  • imasyu
  • ベストアンサー率36% (19/52)
回答No.2

== で比較をするとnull値と0が同じとみなされてしまいます。===ならば型の違いまで判定してくれるので結果が変わると思います。 こんな感じ $a = 0; $b = ""; if ($a === $b){ echo "XXX"; } else{ echo "YYY"; }

teraum
質問者

お礼

imasyu様 teraumです。 回答有難うございました。 ご親切に有難うございました。 以上です

その他の回答 (2)

  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.3

「==」では型まで見ていません。 「===」(イコールが三つ)を用いれば型まで見てくれます。

teraum
質問者

お礼

kusukusu様 teraumです。 回答有難うございました。 PHPを最近はじめたもので、よく調べれば分かるような質問をしてしまいました。 ご親切に有難うございました。 以上です

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

PHPの4なら NULLが使えるようです。 参考URLを参照してみてください。

参考URL:
http://php.benscom.com/manual/ja/language.types.null.php
teraum
質問者

お礼

taknt様 teraumです。 回答有難うございました。 ご親切に有難うございました。 以上です

関連するQ&A

  • $XXX を含んだ文字列の評価

    '$XXX + $yyy' という文字列($XXXと$yyyは単なる文字列)を評価したものを別の変数に格納したいのですがどうすればいいでしょう。 <?php $XXX = 10 ; $yyy = 5 ; $str = '$XXX + $yyy' ; $ans = なんとか文字列を評価; echo $ans ; ?> 表示 -- 15

    • ベストアンサー
    • PHP
  • 文字列を変数化したい

    ★hyouji.php $a_01="a"; $a_02="b"; echo $data = $a_??; 上記 hyouji.phpに以下のパラメータで接続した場合に hyouji.php?$num=01 numの値によって a又はbが表示したいです。 つまりパラメーターで渡ったデータを変数名にセットしたいのですが、 良い方法はありますでしょうか?

    • ベストアンサー
    • PHP
  • IF関数の論理式が文字列??

    他人が作成したエクセル関数式を理解したいのですが、どう調べたものか手の付け所がわからず、質問をさせて頂きます。 関数は以下の様なものです(<XXX_YYY_10000>の部分はデフォルメしていますが、 XXX,YYY,1000はそれぞれもともと文字列と数字です)。 =IF(OR(A1="",A1<XXX_YYY_10000-2),1,IF(AND(A1>XXX_YYY_10000-2,A1<XXX_YYY_10000),2,IF(A1>=XXX_YYY_10000,3,1))) どなたか詳しいかた、この関数の動作について簡単で結構ですのでご教示頂けないでしょうか。 特に、論理式が<XXX_YYY_10000-2>の様に文字列と数字が混じっており、何を条件としているのか見当つかず躓いています。 すごく頓珍漢な質問をしている様な気もするのですが宜しくお願い致します。

  • Objective-C if

    もう一度すみません http://okwave.jp/qa/q6956458.html 前回の質問で解決したと思ったのですが XXX.hidden&&!YYY.hidden.... と条件を書いても 表示されていてもされていなくても同じ実行がされてしました。 if(XXX.hidden&&!YYY.hidden){ 処理1}else{ 処理2} 表示されていた場合[処理2]が実行されますelseは条件以外の場合なので A if(XXX.hidden&&!YYY.hidden){ 処理1}else{ 処理2} B if(ZZZ.hidden&&!VVV.hidden){ 処理3}else{ 処理4} としたときXXXとYYYが表示されているのに[処理4]が実行されてしまいます もしここに C if(TTT.hidden&&!RRR.hidden){ 処理5}else{ 処理6} が追加されたらXXXとYYYが表示されているのに[処理6]が実行されてしまいます どうすればよいでしょうか?

  • PHPで特定のサイト上の文字列の出現個数を調べたい

    PHP初心者です。 PHPである特定のサイト上のindex.htmlのファイルを解析してその中にある、ファイルxxx.gif の個数を調べてその合計を出したいのですが なかなかうまくいきません。 以下自分なりに作ってみました。 <?php $file_name = "http://www.xxx.com/index.html"; $string1 = fread($file, filesize($file_name)); $string2 = "xxx.gif"; $count =substr_count($string1, string2); echo "<P>".$count; ?> どなたかご教授お願いいたします。

    • ベストアンサー
    • PHP
  • Bシェルのif文

    if文の否定について教えてください。 if $aa='xxx' then else echo yyy fi 間違っているかもしれませんが上に書いたことをやろうとしています。 他の言語の if(!($aa='xxx'))echo yyy; をBシェルのif文で書くにはどうしたらいいですか? $aa='xxx'を$aa!='xxx'にするのではなくて、その外側のifの書式を教えてください。 最初に書いたコードでは、if(!条件)を知らないので if(条件) else 処理 endif のように書きました。

  • phpの文字列表示

    phpで質問です。 ランダムな数字、1~100の間で70以上が出れば表示を変える というプログラムをしたのですが、 70以上が出るとなぜか表示が崩れます。 正常に表示する方法を教えてください。 コード $rand = mt_rand(1,100); echo $rand; if($rand<70) { echo '<ul> <a href="#"><li>A</li></a> <a href="#"><li>B</li></a> <a href="#"><li>C</li></a> <a href="index.php"><li>D</li></a> </ul>'; } else { echo '<ul><a href="example_sub4.php" target="_brank"><li>close</li></a> <a href="#"><li>E</li></a> <a href="#><li>F</li></a> <a href="index.php"><li>G</li></a>'; } ?>

    • ベストアンサー
    • PHP
  • #defineの定数を文字列として読み込む

    #define A "xxx" #define B "yyy" と定義しておいて scanf("%s", str) で読み込んだ文字列strが "xxx"だった場合、"yyy"だった場合のように分岐したいのですが このとき if(str == "xxx") のように中身を指定するのではなく if(str == AA) のように定数で分岐させることってできますか? 上記のままではできませんが、何か特別な関数とかでできるのでしょうか?

  • クエリ文字列が取得できない

    以下のようなプログラムを作りました。 test.php -------------- <HTML><BODY> <?php echo($_REQUEST["n"]); ?> </BODY></HTML> -------------- それで http://(省略)/test.php?n=5 とURLをいれて Query Stringから5を取得させて表示させたいのですが ローカルでのテスト(Apache/1.3.27)はうまくいくのですが サーバーにアップロードすると何も表示されません。 他のPHPのプログラムは動くのですが、どうもこの$_REQUEST["n"];の部分がうまくいっていないようです。 プログラムのミスか、設定のミスか、考えられる対処法を教えていただけないでしょうか? 環境 PHP 4.2.2 サーバー:レンタルサーバー(1-man.net) (phpは使えるサーバーです) Dreamweaver MX

    • ベストアンサー
    • PHP
  • echoの直後に変数(文字列ではなく)を記述?

    echoの正しい記述方法についてご質問します。 echoの直後に変数(文字列ではなく)を記述する場合の質問です。この場合、echoを使用して「変数です」と出力(「」は、出力しません。)するには、以下の例の内、どの記述が正しい(又は最も良い)のでしょうか? 例1: <?php $var = "変数"; echo $var,'です'; ?> 例2: <?php $var = "変数"; echo ',$var,です'; ?> 例3: <?php $var = "変数"; echo '$var,です'; ?> また、上記よりもっと良い記述方法があれば、お教え下さい。 この質問の内容に関して詳細な情報が記載されているサイト等をご存知でしたら、お教え下さい。 よろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう