#はじめに
PHPで論理積を行う演算子、&&とAND、
および、論理積を行う演算子、||とOR、この違いを調べたのでまとめた
#違い
結論から述べると、&&とAND、この両者の違いは、
&&(AND)前後の式の結合度が異なる。
演算子の計算には、優先順序がある。例えば、以下のような加算と乗算では、乗算の方が優先される。
そのため、カッコを付けることで、加算を乗算よりも先に計算しようとする。
例: 1 + 2 * 3 => 7
例: ( 1 + 2 ) * 3 => 9
しかし、計算の優先順位が同じ場合は、結合性(右から評価をするにか、左から評価をするのか)によって計算の順序が決まる。
例えば、
「−」は、左結合のため、
1 − 2 − 3 は ( 1 − 2 ) − 3
のように、計算される
一方、「=」は、右結合のため、
$a = $b= $c は、$a = ($b = $c)
のようになる
では、&&とANDについてである。
&&とANDでは、&&の方が演算子の優先順位が高い。
また、ANDは、「=」や、「+」「-」、「<」「>」などよりも優先順位が低い
そのため、
$a = true && false; => $a に代入されるのは、(true && false) の評価結果 => $a = false
$b = true and false; => ($b = true ) and false => $b には true が代入される
#まとめ
&&(||)を使いましょう。
参考
[演算子の優先順位]
(http://jp2.php.net/manual/ja/language.operators.precedence.php)