<?php
$test = '0';
if ($test== '') error('存在しません。(1)');
(!$test == '') or error('存在しません。(2)');
function error($str) {
echo $str;
}
?>
上記のコードを実行すると、何故か「存在しません。(2)」が表示されてしまいます。
何故表示されるのでしょうか?お教えください。
(!$test == '') or error('存在しません。(2)');
この式を読むと
($test変数の否定と''は一致するか?)と(error('存在しません。(2)')の戻り値)の論理和、と言うことになります。
つまり、常にerror('存在しません。(2)')は実行されます。
''と’0’は意味が違います。
''はNULLですが、'0'は0という文字が代入されています。
なので「存在しません。(2)」で正しいです。
申し訳ありません。
質問のコードが間違っていました。
お手数ですが、
http://q.hatena.ne.jp/1176565650
こちらにご解答願えないでしょうか?