<?php
// 範例 1:位運算子 |
$a = 0; $b = 0;
if ($a = 3 | $b = 3) {
$a++; $b++;
}
echo $a . ',' . $b; // 輸出:4,4
?>
<?php
// 範例 2:邏輯運算子 ||
$a = 0; $b = 0;
if ($a = 3 || $b = 3) {
$a++; $b++;
}
echo $a . ',' . $b; // 輸出:1,1
?>
|| > =(賦值運算子)$a = (3 | $b = 3)$b = 3 執行,$b 變為 3,回傳 33 | 3 → 二進位 0011 | 0011 = 0011 (十進位 3)$a = 3 執行,$a 變為 3if (3) 為真,進入區塊$a++ → 4,$b++ → 4||$a = (3 || $b = 3)3 為真(非零即真)$b = 3 不執行,$b 維持 03 || ... 回傳 true (布林值)$a = true,$a 變為布林 trueif (true) 進入區塊$a++:true (1) + 1 = 1 (仍為 true)$b++:0 + 1 = 1| 特性 | 位運算子 | | 邏輯運算子 || |
|---|---|---|
| 運算對象 | 整數位元 | 布林邏輯值 |
| 短路 | 否 | 是 |
| 優先級 | 高於 = | 低於 = |
| 回傳型別 | 整數 | 布林 |
| 適用場景 | 位元旗標操作、權限遮罩 | 條件判斷、流程控制 |
|| / &&,避免非預期的賦值副作用。if (($a = 3) || ($b = 3)) 消除歧義。摘自 zdrjlamp