[PHP]超入門:論理演算子とは?&&・||・and・or の違いと使い方をわかりやすく解説
論理演算子とは?
論理演算子は、「AかつB」や「CまたはD」といった複数の条件を組み合わせて判断するための演算子です。
主にif
文やwhile
文などの条件式で使われ、処理の分岐や繰り返しに柔軟性をもたらします。
PHPの論理演算子一覧
以下はPHPで使える主な論理演算子とその意味です。
演算子 | 説明 | 例 | 結果が true になる条件 |
---|---|---|---|
&& |
論理積(AND) | $a && $b |
$a と$b が両方 true のとき |
and |
論理積(AND) | $a and $b |
$a と$b が両方 true のとき |
or |
論理和(OR) | $a or $b |
$a または$b のいずれかが true のとき |
xor |
排他的論理和(XOR) | $a xor $b |
$a と$b のどちらか一方が true(両方 true は false) |
! |
否定(NOT) | !$a |
$a が false のとき true になる |
AND と OR の使い方
&& / and
1 2 3 4 5 |
$a = true; $b = true; var_dump($a && $b); // true var_dump($a and $b); // true |
両方が true のときだけ結果が true になります。
and
も&&
と同じく論理積を表しますが、演算子の優先順位が異なるため注意が必要です(後述)。
基本的には&&
を使用するのが安全です。
|| / or
1 2 3 4 5 |
$a = true; $b = false; var_dump($a || $b); // true var_dump($a or $b); // true |
どちらか一方でも true なら結果は true になります。
xor
1 2 3 4 5 6 7 8 9 |
$a = true; $b = false; var_dump($a xor $b); // true $a = true; $b = true; var_dump($a xor $b); // false |
どちらか一方だけが true の場合に true。
両方 true だと false になる点に注意しましょう。
NOT の使い方
1 2 3 |
$a = true; var_dump(!$a); // false |
!
を使うと、真偽値を反転できます。
true → false、false → true になります。
「&&」と「and」、「||」と「or」の違い
&&
とand
、||
とor
は、いずれも論理積・論理和の演算子ですが、優先順位(precedence)が異なります。
そのため、同じように書いても、意図しない結果になることがあります。
1 2 3 4 5 |
$val = false || true; var_dump($val); // true(|| が優先される) $val = false or true; var_dump($val); // false(= が先に評価されるため) |
上記のように、||
は=
よりも優先されますが、or
は=
よりも後に評価されます。
このため、次のようにグループ化しないと意図しない挙動になることがあります
・&&
はand
よりも優先順位が高い
・||
はor
よりも優先順位が高い
原則としては、&&
や||
を使うのが無難です。
まとめ
- 論理演算子は、複数の条件を扱う際に欠かせない
&&
(AND)や||
(OR)が基本and
やor
は優先順位に注意(=
との組み合わせで意図しない動作になることがある)xor
は「どちらか一方だけが true」のときに使える!
で真偽を反転できる(NOT)
[PHP] 超入門 シリーズ
・[PHP] 超入門:演算子とは?算術・比較演算子の違いと使い方をやさしく解説!
・[PHP] 超入門:変数とデータ型の使い方:string・int・arrayの基礎をやさしく解説
・[PHP] 超入門:HTMLとPHPがどうつながるか、ざっくり理解しよう
・[PHP] 超入門:echo・改行・コメントの基本:出力の仕組みをやさしく解説