運算符是用於對變量和值執行操作的符號。PHP 按操作數數量分為一元、二元、三元運算符;按功能分為算術、賦值、比較、邏輯、字符串、數組、類型、位運算等類別。
| 類別 | 運算符 | 示例 | 說明 |
|---|---|---|---|
| 算術 | + | $a + $b | 加 |
| - | $a - $b | 減 | |
| * | $a * $b | 乘 | |
| / | $a / $b | 除(浮點) | |
| % | $a % $b | 取模 | |
| ** | $a ** $b | 冪(PHP 5.6+) | |
| 賦值 | = | $a = $b | 賦值 |
| += -= *= /= %= **= | $a += $b | 複合賦值 | |
| .= | $a .= $b | 字符串連接賦值 | |
| 比較 | == | $a == $b | 值相等(類型轉換) |
| === | $a === $b | 全等(值+類型) | |
| != <> | $a != $b | 不等 | |
| !== | $a !== $b | 不全等 | |
| < <= > >= | $a < $b | 大小比較 | |
| <=> | $a <=> $b | 太空船運算符(PHP 7+,返回 -1/0/1) | |
| 邏輯 | and / && | $a && $b | 邏輯與(&& 優先級高) |
| or / || | $a || $b | 邏輯或 | |
| xor | $a xor $b | 邏輯異或 | |
| ! / not | !$a | 邏輯非 | |
| 字符串 | . | $a . $b | 連接 |
| .= | $a .= $b | 連接賦值 | |
| 數組 | + | $a + $b | 聯合(鍵不覆蓋) |
| == | $a == $b | 鍵值對相等 | |
| === | $a === $b | 鍵值對全等(順序+類型) | |
| 類型 | instanceof | $a instanceof Class | 對象類型檢查 |
| ?: | $a = $b ?: $c | Elvis 運算符(PHP 5.3+) | |
| 位運算 | & | ^ ~ << >> | $a & $b | 按位與/或/異或/取反/左移/右移 |
| ?? | $a ?? $b | 空合並運算符(PHP 7+,$a 存在且非 null 取 $a,否則 $b) |
1. clone new // 實例化 2. [ // 數組下標 3. ** // 冪 4. ++ -- ~ (int) (float) (string) ... // 一元運算符/類型轉換 5. instanceof // 類型檢查 6. * / % // 乘除模 7. + - . // 加減/字符串連接 8. << >> // 位移 9. < <= > >= <=> // 比較 10. == != === !== <> // 相等/不等 11. & // 按位與 12. ^ // 按位異或 13. | // 按位或 14. && // 邏輯與 15. || // 邏輯或 16. ?? // 空合並 17. ? : // 三元運算符(右結合) 18. = += -= *= /= %= **= .= &= |= ... // 賦值(右結合) 19. and // 邏輯與(極低優先級) 20. xor // 邏輯異或 21. or // 邏輯或(極低優先級)
| 代碼 | 實際解析 | 預期 | 修正 |
|---|---|---|---|
$a = $b ?: $c = $d | $a = ($b ?: ($c = $d)) | ($a = $b) ?: ($c = $d) | 加括號 |
if ($a = $b && $c) | if ($a = ($b && $c)) | if (($a = $b) && $c) | 加括號 |
echo 'sum: ' . $a + $b | (echo 'sum: ' . $a) + $b | echo 'sum: ' . ($a + $b) | 加括號 |
$a ?? $b ?? $c | ($a ?? $b) ?? $c | 左結合,正確 | 無需修正 |
熟練掌握運算符分類、優先級、結合性,是寫出無 Bug 表達式的基礎。**原則:不確定時加括號**,代碼可讀性優於炫技。PHP 7+ 引入 <=>、?? 等現代運算符,大幅簡化了比較與空值處理邏輯,建議優先使用。