文字列比較の注意点 == は駄目デス

2008 年 7 月 31 日 – 10:55 AM

文字列の比較で、下記のソースをご覧ください。

if ($abc== $xyz) {
  echo “Ok!” ;
} else {
  echo “NG!”;
}

仮に $abc には、文字列で、”uzula” がセットされていたとします。
$xyz には 数値の 0 がセットされているとします。
この場合、表示されるのは Ok! です。

$xyz が文字列で定義されていれば問題ない話ですが、うっかり数値を入れてしまうと数値の比較となるので、 uzula は 0 になり 0 == 0 となるわけです。
同様に、$abc = “2ab” の場合、$xyz = 2 で $abc == $xyz が成立します。

まあ普通はこんなことしないので問題ないと思いますが、文字列比較は下記のようにすれば安全です。

if(strcmp($abc,$xyz) == 0) {
  echo “Ok!” ;
} else {
  echo “NG!”;
}

参考記事
PHP:文字列の比較で == は絶対に使っちゃだめ。

Post a Comment