新しく質問する

if( strcmp( 引数, 引数 )=== 0

役に立った:2件
  • 質問者:re999
  • 投稿日時:2011/06/18 17:11
  • 困り度:暇なときに回答をください
  • 友達に紹介
  • ブログに書く
  • 教えて!gooお気に入り

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

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


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


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

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


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

この質問への回答は締め切られました。
このQ&Aは役に立ちましたか?(役に立った:2件)
  • 参考になった:0件
  • 回答者:yambejp
  • 回答日時:2011/06/20 09:37

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

===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";

?>

通報する

この回答へのお礼

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

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

  • 参考になった:0件

No.2ベストアンサー20pt

  • 回答者:notnot
  • 回答日時:2011/06/18 19:56

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

通報する

この回答へのお礼

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

  • 参考になった:0件
  • 回答者:bakayarou_
  • 回答日時:2011/06/18 18:39

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

通報する

この回答へのお礼

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

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

  
このQ&Aは役に立ちましたか?(役に立った:2件)

このページのトップへ

Facebook公式ページ

公式Twitter