首页 > PHP教程 > PHP运算符与流程控制

PHP运算符的优先级

运算符是可以通过给出的一或多个值来产生另一个值(因而整个结构成为一个表达式)的符号。

运算符可按照其能接受几个值来分组。一元运算符只能接受一个值,例如 !(逻辑取反运算符)或 ++(递增运算符)。

二元运算符可接受两个值,例如熟悉的算术运算符 +(加)和 -(减),大多数 PHP 运算符都是这种。

最后是唯一的三元运算符 ? :,可接受三个值;通常就简单称之为“三元运算符”(条件运算符)。

运算符优先级指定了表达式运算的结合顺序。例如,表达式 1 + 5 * 3 的结果是 16 而不是 18 是因为乘号(“*”)的优先级比加号(“+”)高,先计算5*3再加1。

必要时可以用括号来强制改变优先级。例如:(1 + 5) * 3 的值为 18。

如果运算符优先级相同,那运算符的结合方向决定了该如何运算。例如,"-"是左联的,那么 1 - 2 - 3 就等同于 (1 - 2) - 3 并且结果是 -4.

另外一方面,"="是右联的,所以 $a = $b = $c 等同于 $a = ($b = $c)。

没有结合的相同优先级的运算符不能连在一起使用,例如 1 < 2 > 1 在PHP是不合法的。

但另外一方面表达式 1 <= 1 == 1 是合法的, 因为 == 的优先级低于 <=。

括号的使用,通过括号的配对来明确标明运算顺序,而非靠运算符优先级和结合性来决定,通常能够增加代码的可读性。

下表按照优先级从高到低列出了运算符。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$a = 3 * 3 % 5; //等同 (3 * 3) % 5 = 4
$a = true ? 0 : true ? 1 : 2; //等同 (true ? 0 : true) ? 1 : 2 = 2 
$a = 1;
$b = 2;
$a = $b += 3; // 等同$a = ($b += 3)  结果 $a = 5, $b = 5
?> 
<?php
$a = 1;
echo $a + $a++; // 输出 2 或 3
  
$i = 1;
$array[$i] = $i++; // 数组键名为 1 或 2
?>

以上就是PHP运算符的优先级的全部内容,欢迎大家学习。

PHP历史版本

关闭
感谢您的支持,我会继续努力!
扫码打赏,建议金额1-10元


提醒:打赏金额将直接进入对方账号,无法退款,请您谨慎操作。