またやってしまった。(phpでの比較演算時のミス)

phpで、
if (0 == "") {
     print "1";
} else {
     print "2";
}
の結果は、1になるのですね。

phpで、

if (0 == "") {
     print "1";
} else {
     print "2";
}

の結果は、1になるのですね。


たしかに、0も空文字もFalseなのでそうなのですが、
なれないので、違和感を感じます。 (゚Д゚)ハァ?

たとえば、
strposでは文字列を検索したときに、見つからなかった場合は、空文字、1桁目に見つかった場合は、0を返します。

で、

$ret = strpos("abcd","a");
if ($ret == "") {
     見つからなかった場合の処理
} else {
     見つかった場合の処理
}

なんて書くと、aは検索される文字列内にあるにもかかわらず、見つからなかった場合の処理が実行されます。

解決策は、
if ($ret == "") {
ではなく、
if (strlen($ret) == 0) {
とでも書けばいいのですが、普通はどうするのだろう( ̄Д ̄;;


何度かこのミスを繰り返してしまうのでメモ。

パソコン・インターネット
2008/09/20




コメント(0)|コメントを書く

カテゴリー一覧
最近のコメント

新着記事をメールで通知
このブログを友達に教える

待受・4コマ | 有名人・芸能人ブログ | ケータイ占い | ケータイ小説 | ニュース | 掲示板



画面TOP↑



powered by cocolog