php语言运算符的优先级与结合性是怎样的
PHP 语言运算符的优先级与结合性
运算符用于对数据进行各种操作。在 PHP 中,运算符的优先级和结合性决定了复合表达式中的运算顺序。
优先级
优先级决定了运算符执行的顺序。优先级较高的运算符先执行,而优先级较低的运算符后执行。PHP 中的运算符优先级从最高到最低如下:
| 优先级 | 运算符 |
|---|---|
| 1 | 圆括号 `()` |
| 2 | 一元运算符:`+ - ~ !` |
| 3 | 乘方 `` |
| 4 | 乘除取余 `* / %` |
| 5 | 加减 `+ -` |
| 6 | 移位 `<< >>` | | 7 | 比较 `== != < > <= >=` || 8 | 逻辑与 `&&` |
| 9 | 逻辑或 `||` |
| 10 | 条件 `? :` |
| 11 | 赋值 `=` |
| 12 | 逗号 `,` |
结合性
结合性决定了具有相同优先级的运算符执行的顺序。运算符可以具有从左到右或从右到左的结合性。
| 结合性 | 运算符 |
|---|---|
| 从左到右 | 乘除取余 `* / %`、加减 `+ -`、移位 `<< >>` | | 从右到左 | 比较 `== != < > <= >=` |优先级和结合性的影响
考虑以下表达式:
php
$result = 10 + 2 * 3;
乘法运算符 `*` 的优先级高于加法运算符 `+`,因此乘法运算首先执行。因此,计算顺序为:
$result = 10 + (2 * 3) = 16
现在考虑这个表达式:
php
$result = 10 + 2 == 3 * 3;
比较运算符 `==` 和乘法运算符 `*` 具有相同的优先级,但比较运算符具有从右到左的结合性,而乘法运算符具有从左到右的结合性。因此,计算顺序为:
$result = (10 + 2) == (3 * 3) = false
运算符优先级表
以下是一个用于参考 PHP 运算符优先级和结合性的表:
| 运算符 | 优先级 | 结合性 |
|---|---|---|
| `()` | 1 | 从左到右 |
| `+` (一元) | 2 | 从右到左 |
| `-` (一元) | 2 | 从右到左 |
| `~` | 2 | 从右到左 |
| `!` | 2 | 从右到左 |
| `` | 3 | 从右到左 |
| `*` | 4 | 从左到右 |
| `/` | 4 | 从左到右 |
| `%` | 4 | 从左到右 |
| `+` | 5 | 从左到右 |
| `-` | 5 | 从左到右 |
| `<<` | 6 | 从左到右 |
| `>>` | 6 | 从左到右 |
| `==` | 7 | 从右到左 |
| `!=` | 7 | 从右到左 |
| `<` | 7 | 从右到左 |
| `>` | 7 | 从右到左 |
| `<=` | 7 | 从右到左 |
| `>=` | 7 | 从右到左 |
| `&&` | 8 | 从左到右 |
| `||` | 9 | 从左到右 |
| `? :` | 10 | 从右到左 |
| `=` | 11 | 从右到左 |
| `,` | 12 | 从左到右 |
使用括号控制操作顺序
括号可以用来控制表达式的操作顺序。优先级最高的括号内的表达式首先执行。考虑以下表达式:
php
$result = (10 + 2) * 3;
括号强制加法运算符 `+` 优先于乘法运算符 `*`,因此计算顺序为:
$result = (10 + 2) * 3 = 36
总结
了解 PHP 运算符的优先级和结合性对于编写清晰和高效的代码至关重要。通过正确的运算符使用,可以避免意外的结果并确保代码按预期执行。
- 上一篇:php语言介绍
- 下一篇:php语言运算符的优先级与结合性是怎样的