
こんにちは、あきぞらです。
PHPで文字列を比較する処理を書いていた時に、
おさらいしておきたかったので、今回は文字列比較方法を書いていきます。
比較演算子 `==`
こちらは型の相互変換をした後で等しいかどうかを判定する比較。
2つ目の式は比較の前に右辺を数値型に変換してから比較するため、
123と123の比較になり、Trueが返されます。
123 == 1234 // これは当然Falseになります 123 == '1234' // これもFalseになります 123 == '123abcdefg' // これはTrueになります(!!)
3つ目が`true`になるため、注意が必要です。
比較演算子 `===`
こちらは、型の比較をおこないます。
123 == '123abcdefg' // 当然Falseです 12345 === '12345' // Falseです 12345 === (int)'12345' // Trueです
型で比較するので、int型とstring型では方が違うので、
結果はFalseになります。
strcmp関数を使った比較
等しい場合は0、等しくない場合はバイト数比較の結果が返されます。
strcmp(123, '123abcdefg') // 等しくなく後者が大きいのでマイナスになります strcmp(12345, '12345') // 比較結果は0(等しい)となります strcmp(12345, (int)'12345') // 比較結果は0(等しい)となります
使い方を間違えると、バグの原因にもなったりするので、注意して利用したいところです。