## 邏輯運算符
**邏輯運算符**
| 例子 | 名稱 | 結果 |
| --- | --- | --- |
| $a and $b | And(邏輯與) | **`TRUE`**,如果 $a 和 $b 都為 **`TRUE`**。 |
| $a or $b | Or(邏輯或) | **`TRUE`**,如果 $a 或 $b 任一為 **`TRUE`**。 |
| $a xor $b | Xor(邏輯異或) | **`TRUE`**,如果 $a 或 $b 任一為 **`TRUE`**,但不同時是。 |
| ! $a | Not(邏輯非) | **`TRUE`**,如果 $a 不為 **`TRUE`**。 |
| $a && $b | And(邏輯與) | **`TRUE`**,如果 $a 和 $b 都為 **`TRUE`**。 |
| $a || $b | Or(邏輯或) | **`TRUE`**,如果 $a 或 $b 任一為 **`TRUE`**。 |
“與”和“或”有兩種不同形式運算符的原因是它們運算的優先級不同(見[運算符優先級](http://php.net/manual/zh/language.operators.precedence.php))。
**Example #1 邏輯運算符示例**
```
<?php
//?--------------------
//?foo()?根本沒機會被調用,被運算符“短路”了
$a?=?(false?&&?foo());
$b?=?(true??||?foo());
$c?=?(false?and?foo());
$d?=?(true??or??foo());
//?--------------------
//?"||"?比?"or"?的優先級高
//?表達式?(false?||?true)?的結果被賦給?$e
//?等同于:($e?=?(false?||?true))
$e?=?false?||?true;
//?常量?false?被賦給?$f,true?被忽略
//?等同于:(($f?=?false)?or?true)
$f?=?false?or?true;
var_dump($e,?$f);
//?--------------------
//?"&&"?比?"and"?的優先級高
//?表達式?(true?&&?false)?的結果被賦給?$g
//?等同于:($g?=?(true?&&?false))
$g?=?true?&&?false;
//?常量?true?被賦給?$h,false?被忽略
//?等同于:(($h?=?true)?and?false)
$h?=?true?and?false;
var_dump($g,?$h);
?>
```
以上例程的輸出類似于:
~~~
bool(true)
bool(false)
bool(false)
bool(true)
~~~
- 序言
- 簡介
- PHP是什么?
- PHP能做什么?
- 基本語法
- 類型
- boolean(布爾型)
- integer(整型)
- float(浮點型)
- string(字符串)
- array(數組)
- object(對象)
- callable(可調用)
- resource(資源)
- NULL(無類型)
- 偽類型
- 類型轉換的判別
- 變量
- 基礎
- 預定義變量
- 變量范圍
- 可變變量
- 來自PHP之外的變量
- 常量
- 語法
- 魔術常量
- 表達式
- 運算符
- 運算符優先級
- 算術運算符
- 賦值運算符
- 位運算符
- 比較運算符
- 錯誤控制運算符
- 執行運算符
- 遞增/遞減運算符
- 邏輯運算符
- 字符串運算符
- 數組運算符
- 類型運算符
- 流程控制
- if
- else
- elseif/else if
- 流程控制的替代語法
- while
- do-whille
- for
- foreach
- break
- continue
- switch
- declare
- return
- require
- include
- require_once
- include_once
- goto
- 函數
- 用戶自定義函數
- 函數的參數
- 返回值
- 可變函數
- 內部 (內置)函數
- 匿名函數
- 類與對象
- 簡介
- 基本概念
- 屬性
- 類的自動加載
- 構造函數
- 訪問控制(可見性)