PHPの === 演算子は大文字小文字を区別するようですね。では、strcmp()を使う理由はあるのでしょうか?のようにしても安全でしょうか?
===
strcmp()
if ( $password === $password2 ) { ... }
これを使う理由は、strcmpである。
strcmp
は、str1がstr2より小さい場合は0を、両者が等しい場合は0を返します。
===はtrueかfalseを返すだけで、どちらがquot;greater"なのかはわかりません。
は
か
を返すだけで、どちらが
を使うのは危険かもしれません。
2つのデータ型が異なる場合、変数を別のデータ型にキャストしてしまうことに注意してください。
例を挙げます。
echo (1 == '1') ? 'true' : 'false';
echo (1 == true) ? 'true' : 'false';
ご覧のように、この2つは異なるタイプのものですが、結果は true となり、コードが期待するものとは異なるかもしれません。
true
しかし、===を使用することをお勧めします。テストによると、strcmp()や大文字小文字を区別しないstrcasecmp()よりも少しだけ速くなります。
strcasecmp()
素早くググると、次のような速度比較が出てきます。http://snipplr.com/view/758/
文字列を辞書的に並べたり比較したりしたい場合には,strcmp()が使えます1。等価性をチェックするだけであれば、==で十分です。
==
これを使う理由は、
strcmp
である。===
は
trueか
falseを返すだけで、どちらが
quot;greater"なのかはわかりません。を使うのは危険かもしれません。
2つのデータ型が異なる場合、変数を別のデータ型にキャストしてしまうことに注意してください。
例を挙げます。
echo (1 == '1') ? 'true' : 'false';
echo (1 == true) ? 'true' : 'false';
ご覧のように、この2つは異なるタイプのものですが、結果は
true
となり、コードが期待するものとは異なるかもしれません。しかし、
===
を使用することをお勧めします。テストによると、strcmp()
や大文字小文字を区別しないstrcasecmp()
よりも少しだけ速くなります。素早くググると、次のような速度比較が出てきます。http://snipplr.com/view/758/
文字列を辞書的に並べたり比較したりしたい場合には,
strcmp()
が使えます1。等価性をチェックするだけであれば、==
で十分です。