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

Kimio Mizuguchi mizuguchi.kimio @ ytv.home.ne.jp
2007年 11月 10日 (土) 17:00:39 JST


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 メーリングリストの案内