企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 运算符优先级 运算符优先级指定了两个表达式绑定得有多“紧密”。例如,表达式 *1 + 5 \* 3* 的结果是 *16* 而不是 *18* 是因为乘号(“\*”)的优先级比加号(“+”)高。必要时可以用括号来强制改变优先级。例如:*(1 + 5) \* 3* 的值为 *18*。 如果运算符优先级相同,那运算符的结合方向决定了该如何运算。例如,"-"是左联的,那么 *1 - 2 - 3* 就等同于 *(1 - 2) - 3* 并且结果是 *\-4*. 另外一方面,"="是右联的,所以 *$a = $b = $c* 等同于 *$a = ($b = $c)*。 没有结合的相同优先级的运算符不能连在一起使用,例如 *1 1* 在PHP是不合法的。但另外一方面表达式 *1 <= 1 == 1* 是合法的, 因为 *\==* 的优先级低于 *<=*。 括号的使用,哪怕在不是必要的场合下,通过括号的配对来明确标明运算顺序,而非靠运算符优先级和结合性来决定,通常能够增加代码的可读性。 下表按照优先级从高到低列出了运算符。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。 **运算符优先级** | 结合方向 | 运算符 | 附加信息 | | --- | --- | --- | | 无 | clone new | [clone](http://php.net/manual/zh/language.oop5.cloning.php) 和 [new](http://php.net/manual/zh/language.oop5.basic.php#language.oop5.basic.new) | | 左 | *\[* | [array()](http://php.net/manual/zh/function.array.php) | | 右 | *\*\** | [算术运算符](http://php.net/manual/zh/language.operators.arithmetic.php) | | 右 | *++* *\--* *~* *(int)* *(float)* *(string)* *(array)* *(object)* *(bool)* *@* | [类型](http://php.net/manual/zh/language.types.php)和[递增/递减](http://php.net/manual/zh/language.operators.increment.php) | | 无 | *instanceof* | [类型](http://php.net/manual/zh/language.types.php) | | 右 | *!* | [逻辑运算符](http://php.net/manual/zh/language.operators.logical.php) | | 左 | *\** */* *%* | [算术运算符](http://php.net/manual/zh/language.operators.arithmetic.php) | | 左 | *+* *\-* *.* | [算术运算符](http://php.net/manual/zh/language.operators.arithmetic.php)和[字符串运算符](http://php.net/manual/zh/language.operators.string.php) | | 左 | *>* | [位运算符](http://php.net/manual/zh/language.operators.bitwise.php) | | 无 | ** *\>=* | [比较运算符](http://php.net/manual/zh/language.operators.comparison.php) | | 无 | *\==* *!=* *\===* *!==* ** | [比较运算符](http://php.net/manual/zh/language.operators.comparison.php) | | 左 | *&* | [位运算符](http://php.net/manual/zh/language.operators.bitwise.php)和[引用](http://php.net/manual/zh/language.references.php) | | 左 | *^* | [位运算符](http://php.net/manual/zh/language.operators.bitwise.php) | | 左 | *|* | [位运算符](http://php.net/manual/zh/language.operators.bitwise.php) | | 左 | *&&* | [逻辑运算符](http://php.net/manual/zh/language.operators.logical.php) | | 左 | *||* | [逻辑运算符](http://php.net/manual/zh/language.operators.logical.php) | | 左 | *??* | [比较运算符](http://php.net/manual/zh/language.operators.comparison.php) | | 左 | *? :* | [ternary](http://php.net/manual/zh/language.operators.comparison.php#language.operators.comparison.ternary) | | right | *\=* *+=* *\-=* *\*=* *\*\*=* */=* *.=* *%=* *&=* *|=* *^=* *>=* | [赋值运算符](http://php.net/manual/zh/language.operators.assignment.php) | | 左 | *and* | [逻辑运算符](http://php.net/manual/zh/language.operators.logical.php) | | 左 | *xor* | [逻辑运算符](http://php.net/manual/zh/language.operators.logical.php) | | 左 | *or* | [逻辑运算符](http://php.net/manual/zh/language.operators.logical.php) |