[PHP-users 32843] Re: if($input=="error")の不思議
KOYAMA Tetsuji
koyama @ hoge.org
2007年 11月 10日 (土) 17:40:47 JST
小山です。
On Nov 10, 2007 5:00 PM, Kimio Mizuguchi <mizuguchi.kimio @ ytv.home.ne.jp> wrote:
> php5で次のような簡単なプログラムを作ったのですが、動作が期待と異なります。
> どうしてそうなるのかわかりません。
>
> <?php
> function isFailed($input){
> if($input=="error")
> {
> return True;
> }else{
> return False;
> }
> }
>
> if(isFailed(0)){
> print("TRUE");
> }else{
> print("FALSE");
> }
> ?>
文字列と数値を比較する場合、PHPは文字列を数値として解釈しようとします。
この例では
( 0 == "error" )
という比較になるわけですが、"error" を数値に変換して解釈しようとして
変換できずに 0 になります。
このような自動的な方変換による影響を避けたいのであれば、 == ではなく === 演算子
を用いるべきです。
PHPの値の自動変換の罠は、Dino の塙さんが詳しくまとめていらっしゃいます。
http://pukiwiki.hnw.jp/index.php?PHP%CA%D9%B6%AF%B2%F1%2F%A4%B5%A4%DE%A4%B6%A4%DE%A4%CA%C3%CD%A4%CE%C8%E6%B3%D3%C9%BD
--
小山哲志@ビート・クラフト
koyama @ beatcraft.com
koyama @ hoge.org
PHP-users メーリングリストの案内