• ベストアンサー

XAMPを使っているのですが、論理演算子がうまく機能しません。

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が返ってきます。なにが原因なのでしょうか?よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

演算子の評価順位ですね 「=」の方が「and」より先に評価されます $h = $f and $g; というのは見やすくすると ($h = $f) and $g; ということです。 優先するなら「&&」をつかいます $h = $f && $g; もちろん以下でも可 $h = ($f and $g); >本に書いてあるような結果になりません。 本当に本に上記のようなことが書いてあるなら、その本は捨てた方がいいでしょう

noname#191924
質問者

お礼

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

その他の回答 (2)

  • oraora777
  • ベストアンサー率20% (56/268)
回答No.2

http://phpspot.net/php/man/php/language.operators.precedence.html 演算子の優先順位。 で=よりandの方が優先順位が低いから だからandを使うなら()でくくる。 もしくはandと同じ動きをするが=より優先順位が高い&&を使う。

noname#191924
質問者

お礼

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

  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.1

>$h = $f and $g; この場合、$hには$fが代入され、$gは無視されます。 論理積を評価したい場合は、括弧で囲う必要があります。 $h = ($f and $g); として結果を出力してみてください。 詳しくはマニュアルを参照されるとよいでしょう。 http://www.php.net/manual/ja/language.operators.logical.php

noname#191924
質問者

補足

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

関連するQ&A