PHPを扱える方に質問です。


<?php
$test = '0';
if ($test== '') error('存在しません。(1)');
(!$test == '') or error('存在しません。(2)');

function error($str) {
echo $str;
}
?>

上記のコードを実行すると、何故か「存在しません。(2)」が表示されてしまいます。
何故表示されるのでしょうか?お教えください。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2007/04/15 00:48:27
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:studioes No.1

回答回数523ベストアンサー獲得回数61

ポイント35pt

(!$test == '') or error('存在しません。(2)');

 この式を読むと

($test変数の否定と''は一致するか?)と(error('存在しません。(2)')の戻り値)の論理和、と言うことになります。

 つまり、常にerror('存在しません。(2)')は実行されます。

id:miya1414

申し訳ありません。

質問のコードが間違っていました。

お手数ですが、

http://q.hatena.ne.jp/1176565650

こちらにご解答願えないでしょうか?

2007/04/15 00:48:10
id:pismo No.2

回答回数91ベストアンサー獲得回数9

ポイント35pt

''と’0’は意味が違います。

''はNULLですが、'0'は0という文字が代入されています。

なので「存在しません。(2)」で正しいです。

id:miya1414

申し訳ありません。

質問のコードが間違っていました。

お手数ですが、

http://q.hatena.ne.jp/1176565650

こちらにご解答願えないでしょうか?

2007/04/15 00:48:09

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません