電子書籍の厳選無料作品が豊富!

サンプルで、
if( strcmp( 第1引数, 第2引数 ) === 0 ){
て書いてあるコードを見たのですが、

この
=== 0
には、どういう意味があるのでしょうか?
(==0とはどう違うのでしょうか? という意味です)


試しに、型の一致を確認できるのかな?
と思いやってみたのですが、
うまくいきませんでした。


$a = "10";
$b = 10;

if( strcmp( $a, $b ) === 0 ){
print "2つの文字列は同じです!";
} else {
print "2つの文字列は違います";
}


strrposの返り値判定に「===」を使うのだったら、
意味は分かるのですが、
それとは意味合いが違うような
(strcmpに===を使う意味はないような)気もするのですが…

A 回答 (3件)

この場合、全く違いはありませんが、「 == を使う必然性がない限り、比較は必ず === を使う」というコーディングルールにしているのではないかと思います。

そのルールには意味があると思います。少なくとも「=== を使う必然性がない限り、比較には必ず == を使う」よりはずっといい。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。参考になりましたー

お礼日時:2011/06/20 16:52

蛇足ですが、数値型のデータを文字列として比較している時点で


仕様にあいまいさがあり不適当なソースなので、厳密に
===でチェックする意味はありません。
本来比べるべき質のものじゃないですね・・・

===0については、strcmpの戻り値が明確に数値型だということを
理解していれば自然とそうなります。

<?
$a = (string) 10;
$b = (int) 10;

if( $a!==$b) print "そもそも違うものを比較する意味があるのか?";

if( strcmp( $a, $b )==0) print "1";
if( strcmp( $a, $b )=="0") print "2";
if( strcmp( $a, $b )==false) print "3";
if( strcmp( $a, $b )=="") print "4";
if( strcmp( $a, $b )==NULL) print "5";

if( strcmp( $a, $b )===0) print "6";
if( strcmp( $a, $b )==="0") print "7";
if( strcmp( $a, $b )===false) print "8";
if( strcmp( $a, $b )==="") print "9";
if( strcmp( $a, $b )===NULL) print "10";

?>
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>蛇足ですが、数値型のデータを文字列として比較している時点で
>仕様にあいまいさがあり不適当なソースなので、厳密に
>===でチェックする意味はありません。
>本来比べるべき質のものじゃないですね・・・
確かにその通りなのですが…。
あくまでも勉強用ということで、
質問してみましたー

お礼日時:2011/06/20 16:57

>には、どういう意味があるのでしょうか?


>(==0とはどう違うのでしょうか? という意味です)
まず「==」と「===」の違いは「PHP 比較演算子」で検索すればでてくる。
で今回の
>(strcmpに===を使う意味はないような)気もするのですが…
だけどはっきり言うと意味はない。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

>だけどはっきり言うと意味はない。
はっきり言っていただけると助かります。
もしかしたら、何か特別な使い方があるのかもしれない、
と思い質問してみましたー

お礼日時:2011/06/20 16:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!