文字列比較は===かstrcmpで

PC関連 | 2008-03-07  

PHP文字列の比較(しょっぱいハマリ)

文字列の比較に == を使うのはだめですから。

そう。PHPは適当なところがあります。

if (‘2a’ == 2) {

ここ通る

}

※整数値を文字列と比較する際、文字列が 数値に変換されます。
数値形式の文字列を比較する場合、それは整数として比較されます。
これらの ルールは、 switch 文にも適用されます。

数値として文字列が評価された時、結果の値と型は次のように定義されます。

文字列は、’.’、’e’、’E’ のどれかが含まれている場合は float、それ以外は整数として評価されます。

文字列の最初の部分により値が決まります。
文字列が、 有効な数値データから始まる場合、この値が使用されます。
その他の場合、 値は 0 (ゼロ) となります。
有効な数値データは符号(オプション)の後に、
1 つ以上の数字 (オプションとして小数点を 1 つ含む)、 オプションとして指数部が続きます。
指数部は ‘e’ または ‘E’ の後に 1 つ以上の数字が続く形式です。

うそーん。

しかも
’00’ == ‘0000’
↑これtrueですから。

‘100’ == ’10e1′
↑これもtrueですから。。

※数値形式の文字列を比較する場合、それは整数として比較されます。

プギャー

要は文字列の比較をする時には「===」もしくはstrcmpを使うべし。

Leave a Reply

Theme by othico