易百教程

运算符优先级是什么?

在学习运算符优先级之前,请考虑以下示例:

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)。
&&|| 优先级高于和或。和和或甚至低于赋值运算符。
这意味着在使用andor时必须注意。

例如:

$x = false || true; // $x is true
$x = false or true; // $x is false

在第一行,false || true计算结果为true,因此$x最终得到值:true
在第二行中,首先计算$x = false,因为=运算符的优先级高于or运算符。
在评估falsetrue时,$x已经设置为false。坚持使用&&||是个好习惯,除非有特殊情况需要orand运算符的低优先级。