if( strcmp( 引数, 引数 )=== 0
サンプルで、
if( strcmp( 第1引数, 第2引数 ) === 0 ){
て書いてあるコードを見たのですが、
この
=== 0
には、どういう意味があるのでしょうか?
(==0とはどう違うのでしょうか? という意味です)
試しに、型の一致を確認できるのかな?
と思いやってみたのですが、
うまくいきませんでした。
$a = "10";
$b = 10;
if( strcmp( $a, $b ) === 0 ){
print "2つの文字列は同じです!";
} else {
print "2つの文字列は違います";
}
strrposの返り値判定に「===」を使うのだったら、
意味は分かるのですが、
それとは意味合いが違うような
(strcmpに===を使う意味はないような)気もするのですが…
回答(3件)
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示
蛇足ですが、数値型のデータを文字列として比較している時点で
仕様にあいまいさがあり不適当なソースなので、厳密に
===でチェックする意味はありません。
本来比べるべき質のものじゃないですね・・・
===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";
?>
この回答へのお礼
回答ありがとうございます。
>蛇足ですが、数値型のデータを文字列として比較している時点で
>仕様にあいまいさがあり不適当なソースなので、厳密に
>===でチェックする意味はありません。
>本来比べるべき質のものじゃないですね・・・
確かにその通りなのですが…。
あくまでも勉強用ということで、
質問してみましたー
No.2ベストアンサー20pt
この場合、全く違いはありませんが、「 == を使う必然性がない限り、比較は必ず === を使う」というコーディングルールにしているのではないかと思います。そのルールには意味があると思います。少なくとも「=== を使う必然性がない限り、比較には必ず == を使う」よりはずっといい。
この回答へのお礼
回答ありがとうございました。参考になりましたー
>には、どういう意味があるのでしょうか?
>(==0とはどう違うのでしょうか? という意味です)
まず「==」と「===」の違いは「PHP 比較演算子」で検索すればでてくる。
で今回の
>(strcmpに===を使う意味はないような)気もするのですが…
だけどはっきり言うと意味はない。
この回答へのお礼
回答ありがとうございました。
>だけどはっきり言うと意味はない。
はっきり言っていただけると助かります。
もしかしたら、何か特別な使い方があるのかもしれない、
と思い質問してみましたー
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示











