プロが教える店舗&オフィスのセキュリティ対策術

XAMPを使って、PHPプログラムの練習をしています。
論理演算子を試しているですが、本に書いてあるような結果に
なりません。phpバージョンはPHP 5.3.0です。

$f = true;
$g = false;

$h = $f and $g;
$i = $g and $f;

echo "result:".$h;

$hも$gも同じように結果は空白になるはずなのですが、$hのほうは
1が返ってきます。なにが原因なのでしょうか?よろしくお願いします。

A 回答 (3件)

演算子の評価順位ですね


「=」の方が「and」より先に評価されます

$h = $f and $g;

というのは見やすくすると

($h = $f) and $g;

ということです。
優先するなら「&&」をつかいます

$h = $f && $g;

もちろん以下でも可

$h = ($f and $g);

>本に書いてあるような結果になりません。

本当に本に上記のようなことが書いてあるなら、その本は捨てた方がいいでしょう
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。わかりやすい説明で納得しました。
and と && を私がごっちゃにしてただけみたいです。

お礼日時:2009/12/16 19:33

http://phpspot.net/php/man/php/language.operator …
演算子の優先順位。
で=よりandの方が優先順位が低いから
だからandを使うなら()でくくる。
もしくはandと同じ動きをするが=より優先順位が高い&&を使う。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。よくわかりました。

お礼日時:2009/12/16 19:37

>$h = $f and $g;


この場合、$hには$fが代入され、$gは無視されます。
論理積を評価したい場合は、括弧で囲う必要があります。
$h = ($f and $g); として結果を出力してみてください。

詳しくはマニュアルを参照されるとよいでしょう。
http://www.php.net/manual/ja/language.operators. …

この回答への補足

ご回答ありがとうございます。きちんとなりました。

補足日時:2009/12/16 19:37
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!