PHP 操作符

PHP 运算符优先级

运算符优先级(运算顺序)是反映有关首先执行哪些过程以计算给定表达式的约定的规则。

例如,乘法的优先级高于加法。因此,表达式 1 + 2 × 3 被解释为具有值 1 + (2 × 3) = 7,而不是 (1 + 2) × 3 = 9。当表达式中使用指数时,它优先于两者加法和乘法。因此 3 + 52 = 28 和 3 × 52 = 75。

运算符关联性

运算符关联性是方向其中计算表达式。例如:

$x = 10;
$y = 20;

// = 运算符的结合性是
//从左到右,因此x将变为20
$x = $y; 

由于=的结合性是从左到右。因此,x 被赋予 y 的值。

示例:

下面的示例说明了 PHP 中的运算符优先级。

<?php
//首先计算 5 * 2
$retval1 = 15 - 5 * 2;

//上面的表达式相当于
$retval2 = 15 - (5 * 2);

//强制编译器首先计算 15 - 5
$retval3 = (15 - 5) * 2;

echo "15 - 5 * 2 = $retval1 \n";
echo "15 - (5 * 2) = $retval2 \n";
echo "(15 - 5) * 2 = $retval3 \n";
?> 

上述代码的输出将是:

15 - 5 * 2 = 5
15 - (5 * 2) = 5
(15 - 5) * 2 = 20 

PHP 运算符优先级表

下表列出了 PHP 运算符的优先级和关联性。运算符按优先级降序从上到下列出。优先级较高的运算符先于优先级相对较低的运算符进行计算。当运算符具有相同优先级时,运算符的结合性决定了运算的执行顺序。

优先级运算符描述关联性
25clone克隆运算符NA
new新运算符
24**求幂从右到左
23++a --a前缀递增,前缀递减NA
a++  a--后缀递增、后缀递减
+a -a一元加,一元减
~按位取反
(int) (float) (string) (array) (object) (bool)类型转换
@错误控制运算符
22instanceof类型运算符从左到右
21!逻辑非NA
20*  /  %乘法、除法、求余从左到右
19+  -  .加法、减法、连接运算符(. PHP 8.0.0 之前的版本)
18<<  >>按位左移和右移
17.连接运算符(从 PHP 8.0.0 开始)
16<  <=  >  >=小于、小于或等于、大于、大于或等于非关联
15==  !=等于、不等于
==== !==严格等,严格不等
<>  <=>不等于,太空船操作符、结合比较运算符
14&按位与和引用运算符从左到右
13^按位异或
12|按位或
11&&逻辑与
10||逻辑或
9??空合并运算符从右到左
8a?b:c条件(三元)运算符非关联(PHP 8.0 之前从左到右关联 .0)
7=直接赋值从右到左
+=  -=  *=  /=  %=  **=通过加、减、乘、除、求余和求幂进行复合赋值
.=  ??=连接赋值运算符、Null 合并赋值运算符
<<=  >>=按位左移和右移复合赋值
&=  ^=  |=按位 AND、XOR 和 OR 进行复合赋值
6yield from生成器委托NA
5yield生成器函数
4print打印
3and逻辑与从左到右
2xor逻辑异或
1or逻辑或