※ ChatGPTを利用し、要約された質問です(原文:phpで if( $hoge == 0 ) で、$hogeが文字列でもtureになる)
phpでif( $hoge == 0 )で、$hogeが文字列でもtrueになる
このQ&Aのポイント
phpのif文で、$hogeが0の場合にのみtrueになるようにしたいが、文字列の場合もtrueになってしまう問題が発生した。
ダブルコーテーションを使用して0を囲んだ場合は、文字列でない限り正しく動作する。
ダブルコーテーションを使用せずに0を比較すると、文字列の場合もtrueになるため、このような結果が生じる。
phpで if( $hoge == 0 ) で、$hogeが文字列でもtureになる
phpで、$hogeの値が”0”の時だけ、動作させようと思い
if( $hoge == 0 )
と記述したのですが、0でない時もtrueに 例えば
$hogeの中身が、"text"とかの文字列の時もtrueになっていましました。
そこで
if( $hoge == "0" )
と0をダブルコーテションで囲んだらうまく0のデータだけtrueに
なるよう動作したのですが
なぜ前者の 0 の時は、テキストをも通過してしまったのでしょうか?
ダブルコーテションをつけるか否かは
文字列か、数字かの違いというのは分かるので
"text"ではなく、"100"とかであれば、
両方うまく動作していたであろうことは察しがつきます。
しかし、前者で、"text"をゼロとして認識してしまった理由がよく分かりません。
お礼
回答ありがとうございます。 phpの仕様なんですね。