在学习运算符优先级之前,请考虑以下示例:
3 + 4 * 5
PHP应该先计算3
加上4
,生成结果为7
,然后将结果乘以5
以产生最终数字35
?
或者它应该先将4
乘以5
得到20
,然后将20
加上3
得到23
?
所有PHP运算符都按优先级排序。
以下是到目前为止遇到的所有运算符的列表,按优先顺序排列(优先级最高的排在第一个):
++
,--
(递增/递减)(int)
,(float)
,(string)
,(array)
,(object)
,(bool)
,(casting)
!
(非)*
,/
,%
(算术)+
,-
,.
(算术)<
,<=>
,>=
,<>
(比较)==
,!=
,===
,!==
(比较)&&
(与)||
(或)=
,+=
,-=
,*=
,/=
,.=
,%=
(分配)and
xor
or
可以使用小括号:()
来更改表达式中运算符的执行顺序。括号强制该运算符采用最高优先级。
因此,例如,以下表达式的计算结果为35
:
( 3 + 4 ) * 5
逻辑运算符
PHP有两个逻辑“和”运算符(&&
,and
)和两个逻辑“或”运算符(||
,or
)。&&
和||
优先级高于和或。和和或甚至低于赋值运算符。
这意味着在使用and
和or
时必须注意。
例如:
$x = false || true; // $x is true
$x = false or true; // $x is false
在第一行,false || true
计算结果为true
,因此$x
最终得到值:true
。
在第二行中,首先计算$x = false
,因为=
运算符的优先级高于or
运算符。
在评估false
或true
时,$x
已经设置为false
。坚持使用&&
和||
是个好习惯,除非有特殊情况需要or
和and
运算符的低优先级。