PHP運算符優先級


在我們前面講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)。

1486188938564607.gif括號內的運算符最先執行,括號的使用,哪怕在不是必要的場合下,通過括號的配對來明確標明運算順序,而非靠運算符優先級和結合性來決定,可以提高代碼的可讀性。

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

結合方向	運算符	附加信息
無	clone new	clone和new<
左	[	array()
右	**	算術運算符
右	++ -- ~ (int) (float) (string) (array) (object) (bool) @	類型和遞增/遞減
無	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中文網其它相關文章!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM