脱力系備忘録BloG ホーム »PHPの文字列と数値の比較であせった

PHPの文字列と数値の比較であせった  

プログラムを組んでテストする際、絶対エラーが出るデータを入力したらエラーがでず、調べたらPHPの仕様上のことなので今更ながらあせったメモ。
どういうことかと言うと、文字列数値の比較で、意図しない結果が出ることがあるということ。

今回の例。
$a = 123 ←DBの数値項目から取得
$b = '123a' ←フォームからの入力
var_dump($a == $b);

の場合、FALSEになると思ったらTRUEが返ってきた。
これはPHPの仕様で、数値と文字列の比較の場合、文字列を無理やり数値に内部変換しているため。
つまり、比較の部分では

123 == 123

で比較しているってこと。

なので、片方が文字列型になる場合は、比較項目を明示的に「文字列型」と宣言しないとダメですね。

if ((string) $a == (string) $b) { }

この様に両方文字型と宣言するようにしたほうが良いかもね。

こちらも参考にどうぞ。
PHPの文字列と数値の比較であせった パート2
関連記事

category: PHP

この記事へのコメント

コメントの投稿

非公開コメント

コメントは全て管理人が内容を確認してから表示されます(非公開コメント除く)。
内容によっては表示されない場合がありますことご了承願います。

プロフィール

お問い合わせ

最新記事

最新コメント

▲ Pagetop