結合方向 |
運算符 |
描述 |
說明 |
無 |
clone new |
clone 和 new
|
|
其他 |
[ ] |
其他
|
|
右 |
++ 、 -- 、 () 、 ~、 int 、 float 、 string 、array、object、bool、 @ |
類型和遞增、遞減、錯誤抑制 |
|
右 |
! |
邏輯運算符
|
|
左 |
|
算術運算符
|
|
左 |
+ - . |
算術運算符和字符串運算符
|
|
左 |
<< 左移 >> 右移 |
位運算符
|
|
無 |
== != === !== < > A <>B 不等運算符有兩種寫法 |
比較運算符
|
|
左 |
& 按位與 |
位運算符和引用
|
|
左 |
^ 按位異或 |
位運算符
|
|
左 |
| 按位或 |
位運算符
|
|
左 |
&& 邏輯與 |
邏輯運算符
|
|
左 |
|| 邏輯或 |
邏輯運算符
|
|
左 |
? : |
三元運算符 |
|
右 |
= += -= *= /= .= %= &= |= ^= <<= >>= => |
賦值運算符
|
|
左 |
and (按位與) |
邏輯運算符(與) $a & $b |
將把 $a 和 $b 中都為 1 的位設為 1。 |
左 |
xor (按位異或) |
邏輯運算符(異或)
|
|
左 |
or (按位或) |
邏輯運算符(或)
|
|
左 |
, |
|
|
運算符分類:三大類
單目運算符
++、--、!、~位運算(按位非)
雙目運算符
+、 -、 *、 /、 %、 >、 <、 ==、
三目運算符
? :
容易混淆的運算符口訣:
先乘除后加減,比較邏輯跟着算,非子來了最優先!
也就是優先級:!(非) > 數學類 > 比較類 > 邏輯類
運算符考慮思想:
1、優先級,2、結合方向 3、特例 4、BUG 5、不同類型運算間的轉換
未明確優先級別的運算符:
類型檢查 instanceof 示例: objA instanceof A
其他說明:
運算符與操作數的各種結合情況異常復雜,特殊的案例結果不可預知,無法完全記憶。為了避免特性及BUG
的發生,書寫時要求邏輯清晰,操作數配合運算符要盡量有意義。
以下的特性或bug注意避免其出現就行,以下是示意代碼
<?php
$a =1 ;
$b = $a + $a +$a=2;
//4=1+1+2
// 結果$b是多少?
?>
特例中的編程思想:
在一個有歧義或多種可能運算中,優先按正常順序嘗試進行,如果不行再改變方案。
<?php
$a =1 ;
$b = &$a;
$c = ++ $a + $a ++;
// 結果$c是多少?
?>