首頁  >  文章  >  後端開發  >  php運算子優先順序詳解

php運算子優先順序詳解

怪我咯
怪我咯原創
2017-04-19 16:37:115147瀏覽

在我們前面講PHP邏輯運算子的時候,提到了PHP運算子的優先級,所謂的運算子優先級,指的是在表達式中哪一個運算子先計算,哪一個後計算,就好像,表達式 1 + 5 * 3 的結果

是 16 而不是 18 是因為乘號(「*」)的優先權比加號(「+」)高。如果有需要的話,可以用括號來強制改變優先權。例如:(1 + 5) * 3 的值為 18。

PHP的運算子在運算中遵循的規則是:優先順序高的操作先執行,優先順序低的操作後執行,如果同一優先級,則按照從左到右的順序進行,例如,"-"是左聯的,那麼 1 - 2 - 3 就等同於 (1 - 

2) - 3 且結果是 -4. 另外一方面,"="是右聯的,所以$a = $b = $c 等同於 $a = ($b = $c)。

php運算子優先順序詳解括號內的運算子最先執行,括號的使用,即使在不是必要的場合下,透過括號的配對來明確標明運算順序,而非靠運算子優先順序和結合性來決定,可以提高程式碼的可讀性。

表按照優先權從高到低列出了運算子。同一行中的運算子具有相同優先權,此時它們的結合方向決定求值順序。

類型#左*.#算術運算子與字串運算子            >>  #            ##>=##==            !====< ;=>比較運算子&位元運算符與引用^位元運算子|位元運算子左右                                      .=                                       賦值運算子
結合方向 運算子 附加資訊
clone new clone和new
#左 [ array ()
** #算術運算子
++            --#            ~        #            (string)            (array)            (object)#        #  ##(object)# #類型和遞增/遞減instanceof
!邏輯運算子
           /            % #算術運算子
+       # #-       ##-            
#左#左
位元運算子
>            #>=
##>= ##>
                     #===           
&&邏輯運算子#||##邏輯運算子??比較運算子
#? : 三元運算子
=+=            -=*=
%=&=            |=>>=

and

#邏輯運算子


###xor#########邏輯運算子############左#########or #########邏輯運算子######################這麼多的優先級別,如果想都記得很清楚,是不太現實的,也沒有必要,如果寫的表達式很複雜,而且包含了較多的運行符,不放多使用括號,想下面這樣###:######
<?php
$a and (($b !=$c) or (5*(50-$d)));
?>
####### ##這樣就能減少出現邏輯錯誤的可能######有有時使用括號可以增強程式碼的可讀性。例如,下面這樣:###
<?php
$a = 3 * 3 % 5; // (3 * 3) % 5 = 4

//三元运行的结合
$a = true ? 0 : true ? 1 : 2; // (true ? 0 : true) ? 1 : 2 = 2

$a = 1;
$b = 2;
$a = $b += 3; // $a = ($b += 3) -> $a = 5, $b = 5


?>
#########

以上是php運算子優先順序詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn