## 逻辑运算符
**逻辑运算符**
| 例子 | 名称 | 结果 |
| --- | --- | --- |
| $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
- 函数
- 用户自定义函数
- 函数的参数
- 返回值
- 可变函数
- 内部 (内置)函数
- 匿名函数
- 类与对象
- 简介
- 基本概念
- 属性
- 类的自动加载
- 构造函数
- 访问控制(可见性)