【PHP】文字比較の注意点(==か===かstrcmpか)

前の記事でも似たようなことを書いたけど、再度確認。

前の記事:
【PHP】 == と === の違い

==と===とstrcmp

前回は==と===の違いだけだったけど、さらにstrcmpを追加する。

== 値が等しい場合、TRUE
=== 値とが等しい場合、TRUE
strcmp int strcmp ( string $str1 , string $str2 )
str1 が str2 よりも小さければ < 0 を、str1が str2よりも大きければ > 0 を、 等しければ 0 を返す。

動作の違い

==での比較の場合、型を意識しないが、内部では型変換が行われている。
なので以下の場合だとおかしな挙動をする。

1 == "1a" : TRUE
1 === "1a" : FALSE

“1a”が比較時に型変換され、数値の1と同じになる。
結果、成立してしまう。

なので厳密な文字列比較の場合であれば、===、またはstrcmp(A, B) === 0でないといけない。

さらにはstrcmpの場合、オーバーヘッドが発生するので、特別な理由がなければ===を使うのが基本で良さそうだ。

投稿者: Output48

中学生の時に初めてHTMLに触れてからホームページ制作を独学で始める。 ベンチャー企業の営業、大手企業のSEを経て、独立。 ここ数年はWEB以外の仕事をしていたため、割と本気で勉強中。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください