過去のエントリーにPHPで==の代わりにstrcmp関数を使うことによる問題点というのを見つけたのですが、いまだに実際のソースコードにstrcmpで文字列比較を行っているパターンをよく見かけます。と、言うかやってます。 え!?俺、思いっきり使ってたよ!俺まさか惰弱って思われてる? と、ふと不安になったのでstrcmpについて考えてみました。 なぜそもそもstrcmpで文字列比較を行うようになったのか。 それはPHPの自動型変換が大きな理由になっています。 // これがtrueになるのは有名な話 var_dump("abc" == 0); var_dump("1abc" == 1); 整数値を文字列と比較したり、比較に数値形式の文字が含まれる場合は、文字列が 数値に変換され、 数値としての比較を行います。これらのルールは、 switch 文にも適用されます。 === あるいは !== による