- ベストアンサー
strcmp関数の=== 0とは何ですか?
- strcmp関数の=== 0とは、厳密な比較演算子を使用して、strcmpの返り値が0と等しいかどうかを確認する意味です。
- 比較演算子の===は、値と型が完全に一致する場合に真を返します。
- 異なる型の値を比較する場合は、===を使用することで厳密な比較ができます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
この場合、全く違いはありませんが、「 == を使う必然性がない限り、比較は必ず === を使う」というコーディングルールにしているのではないかと思います。そのルールには意味があると思います。少なくとも「=== を使う必然性がない限り、比較には必ず == を使う」よりはずっといい。
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
蛇足ですが、数値型のデータを文字列として比較している時点で 仕様にあいまいさがあり不適当なソースなので、厳密に ===でチェックする意味はありません。 本来比べるべき質のものじゃないですね・・・ ===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"; ?>
お礼
回答ありがとうございます。 >蛇足ですが、数値型のデータを文字列として比較している時点で >仕様にあいまいさがあり不適当なソースなので、厳密に >===でチェックする意味はありません。 >本来比べるべき質のものじゃないですね・・・ 確かにその通りなのですが…。 あくまでも勉強用ということで、 質問してみましたー
- bakayarou_
- ベストアンサー率23% (32/136)
>には、どういう意味があるのでしょうか? >(==0とはどう違うのでしょうか? という意味です) まず「==」と「===」の違いは「PHP 比較演算子」で検索すればでてくる。 で今回の >(strcmpに===を使う意味はないような)気もするのですが… だけどはっきり言うと意味はない。
お礼
回答ありがとうございました。 >だけどはっきり言うと意味はない。 はっきり言っていただけると助かります。 もしかしたら、何か特別な使い方があるのかもしれない、 と思い質問してみましたー
お礼
回答ありがとうございました。参考になりましたー