[PHP 手冊] – 運算符(運算符優先順序)

[PHP 手冊] – 運算符(運算符優先順序)

[PHP 手冊] – 運算符(運算符優先順序)

 

資料來源: http://www.ithome.com/html/soft/72723.htm

code2html:http://tohtml.com/

 

運算符優先順序指定了兩個運算式綁定得有多”緊密”。例如,運算式 1 + 5 * 3 的結果是 16 而不是 18 是因為乘號(”*”)的優先順序比加號(”+”)高。必要時可以用括弧來強制改變優先順序。例如:(1 + 5) * 3 的值為 18

如果運算符優先順序相同,其結合方向決定著應該從右向左求值,還是從左向右求值——見下例。

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

 

 

運算符優先順序

結合方向

運算符

附加資訊

clone new

clone new

[

array()

++ — ~ (int) (float) (string) (array) (object) (bool) @

類型遞增/遞減

instanceof

類型

!

邏輯運算符

* / %

算術運算符

+ – .

算術運算符字串運算符

<< >>

位運算符

== != === !== <>

比較運算符

&

位運算符引用

^

位運算符

|

位運算符

&&

邏輯運算符

||

邏輯運算符

? :

三元運算符

= += -= *= /= .= %= &= |= ^= <<= >>= =>

賦值運算符

and

邏輯運算符

xor

邏輯運算符

or

邏輯運算符

,

多處用到

對具有相同優先順序的運算符,左結合方向意味著將從左向右求值,右結合方向則反之。對於無結合方向具有相同優先順序的運算符,該運算符有可能無法與其自身結合。舉例說,在 PHP 中 1 < 2 > 1 是一個非法語句,而 1 <= 1 == 1 則不是。因為 T_IS_EQUAL運算符的優先順序比 T_IS_SMALLER_OR_EQUAL的運算符要低。

Example #1 結合方向

<?php
$a 
5// (3 * 3) % 5 = 4
$a true true 2// (true ? 0 : true) ? 1 : 2 = 2

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

// mixing ++ and + produces undefined behavior
$a 1;
echo ++
$a $a++; // may print 4 or 5
?>

使用括弧,即使在並不嚴格需要時,通常都可以增強代碼的可讀性。

Note:

儘管 = 比其他大多數的運算符的優先順序低,PHP 仍舊允許類似如下的運算式:if (!$a = foo()),在此例中 foo() 的返回值被賦給了 $a

 

 

 


發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *