トップページ | フォームをサブミット(送信)する前に、確認メッセージを表示する。 »

2008年9月20日 (土)

またやってしまった。(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) {
とでも書けばいいのですが、普通はどうするのだろう( ̄Д ̄;;


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

|

トップページ | フォームをサブミット(送信)する前に、確認メッセージを表示する。 »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/523449/42537088

この記事へのトラックバック一覧です: またやってしまった。(phpでの比較演算時のミス):

トップページ | フォームをサブミット(送信)する前に、確認メッセージを表示する。 »