無料CGI、PHPサイト(確認画面付きメールフォーム・メーリングリスト・メルマガ設置、逆アクセスランキング、画像カウンター等)PHPマニュアル by k-sky

論理演算子

論理演算子
名前 結果
$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) の評価結果、つまり true です
$f false or true// $f には false が代入されます
var_dump($e$f);

// "&&" の優先順位は "and" より高くなります
$g true && false// $g に代入されるのは、(true && false) の評価結果、つまり false です
$h true and false// $h には true が代入されます
var_dump($g$h);
?>

上の例の出力は、たとえば 以下のようになります。

bool(true)
bool(false)
bool(false)
bool(true)