運算子優先權指定了兩個表達式綁定得有多「緊密」。例如,表達式 1 5 * 3 的結果是 16 而不是 18 是因為乘號(“*”)的優先權比加號(“ ”)高。必要時可以用括號來強制改變優先權。例如:(1 5) * 3 的值為 18。
運算子優先順序決定了運算的順序,運算級高的先計算,如果優先權相同,那麼運算子的結合方向決定了該如何運算。透過使用括號可以強制改變優先權。
運算子優先權從高到低順序如下:
#結合方向 | 運算子 | #附加訊息 |
---|---|---|
無 | clone new | clone 和new |
[ | array() | |
— ~ (int) (float) (string ) (array) (object) (bool) @ | 類型與遞增/遞減 | |
##右 | ! | |
左 | * / % | |
左 | – . | |
左 | << >> | |
無 | ##= = != === !== <>比較運算子 | |
#左 | & | 位元運算符與引用 |
左 | ^ | 位元運算子 |
左 | | | 位元運算子 |
#左 | && | 邏輯運算子 |
左 | || | 邏輯運算子 |
#左 | ?: | 三元運算符 |
右 | = = -= *= /= .= %= &= |= ^= <<= >>= => ; | 賦值運算子 |
#左 | and | 邏輯運算子 |
左 | xor | 邏輯運算子 |
#左 | or | 邏輯運算子 |
左 | , | 多處用到 |
對具有相同優先權的運算符,左結合方向表示將從左向右求值,右結合方向則反之。對於無結合方向具有相同優先權的運算符,此運算符有可能無法與其自身結合。 | 範例:結合方向 |
=
比其它大多數的運算子的優先順序低,PHP 仍舊允許類似如下的表達式:if (!$a = foo()),在此例中foo() 的回傳值被賦給了 $a。以上是php中運算子的優先權是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!