論理演算子
例 | 名前 | 結果 | |
---|---|---|---|
$a and $b | 論理積 | $a および $b が共に true の場合に true
| |
$a or $b | 論理和 | $a または $b のどちらかが true の場合に true
| |
$a xor $b | 排他的論理和 | $a または $b のどちらかが true でかつ両方とも true でない場合に true
| |
! $a | 否定 | $a が true でない場合 true
| |
$a && $b | 論理積 | $a および $b が共に true の場合に true
| |
$a | $b | 論理和 | $a または $b のどちらかが true の場合に true
|
"and" および "or" 演算子が 2 種類あるのは、演算が行われる際の優先順位が 異なっているためです (演算子の優先順位 を参照ください)。
例1 論理演算子についての説明
<?php// --------------------// foo() は決してコールされることはありません。これらの演算子は短絡評価を行うからです。$a = (false && foo());$b = (true || foo());$c = (false and foo());$d = (true or foo());// --------------------// "||" の優先順位は "or" より高くなります// $e に代入されるのは、(false || true) の評価結果です// これは、次の式と同様です: ($e = (false || true))$e = false || true;// $f に false を代入してから "or" 演算子を評価します// これは、次の式と同様です: (($f = false) or true)$f = false or true;var_dump($e, $f);// --------------------// "&&" の優先順位は "and" より高くなります// $g に代入されるのは、(true && false) の評価結果です// これは、次の式と同様です: ($g = (true && false))$g = true && false;// $h に true を代入してから "and" 演算子を評価します// これは、次の式と同様です: (($h = true) and false)$h = true and false;var_dump($g, $h);?>
上の例の出力は、 たとえば以下のようになります。
bool(true) bool(false) bool(false) bool(true)