[PHP-users 32844] Re: if($input=="error")の不思議

N,Kaneshige ia @ mail24.jp
2007年 11月 10日 (土) 17:41:55 JST


こんにちは、金重です。

php4でも同様の結果になります。仕様のようですね。
以下のようにしてはいかがでしょうか?

if($input==="error")

【参考】PHP マニュアル -> 付録 P. PHP 型の比較表
http://search.net-newbie.com/php/types.comparisons.html


07/11/10 に Kimio Mizuguchi<mizuguchi.kimio @ ytv.home.ne.jp> さんは書きました:
> php5で次のような簡単なプログラムを作ったのですが、動作が期待と異なります。
> どうしてそうなるのかわかりません。
>
> <?php
> function isFailed($input){
>   if($input=="error")
>   {
>     return True;
>   }else{
>     return False;
>   }
> }
>
> if(isFailed(0)){
>   print("TRUE");
> }else{
>   print("FALSE");
> }
> ?>
>
> 期待する実行結果はFalseですが、実際はTrueになります。
> isFailed関数は、自前の幾つかの関数でエラーが発生した場合に"error"を返す
> ように仕様を共通化しておいた上で、それらの関数の結果を判定するために作ろ
> うとしたものです。
> if($input == "error")をif(is_string($input) && $input == "error")にすれ
> ば、期待の動作になりますので、そのように変更して使っているのですが、どう
> もすっきりしません。どこが、間違っているのでしょうか。お分かりの方はご教
> 示ください。
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://oldwww.php.gr.jp/php/novice.php3
>


-- 
金重 宣俊


PHP-users メーリングリストの案内