==とstrcmpによる文字列比較

PHPの === 演算子は大文字小文字を区別するようですね。では、strcmp()を使う理由はあるのでしょうか?のようにしても安全でしょうか?

if ( $password === $password2 ) { ... }
ソリューション

これを使う理由は、strcmpである。

は、str1がstr2より小さい場合は0を、両者が等しい場合は0を返します。

===truefalseを返すだけで、どちらがquot;greater"なのかはわかりません。

解説 (9)

を使うのは危険かもしれません。

2つのデータ型が異なる場合、変数を別のデータ型にキャストしてしまうことに注意してください。

例を挙げます。

  • echo (1 == '1') ? 'true' : 'false';
  • echo (1 == true) ? 'true' : 'false';

ご覧のように、この2つは異なるタイプのものですが、結果は true となり、コードが期待するものとは異なるかもしれません。

しかし、===を使用することをお勧めします。テストによると、strcmp()や大文字小文字を区別しないstrcasecmp()よりも少しだけ速くなります。

素早くググると、次のような速度比較が出てきます。http://snipplr.com/view/758/

解説 (2)

文字列を辞書的に並べたり比較したりしたい場合には,strcmp()が使えます1。等価性をチェックするだけであれば、==で十分です。

解説 (5)