$i = 0;
$i = $i | 1; // 輸出 1
echo "$i
";
echo $i |= 2; // 輸出 3
echo "
";
// echo $i |= 4;
echo "
";
echo $i |= 8; // 輸出 11
echo "
";
echo $i & 1; // 輸出 1
echo "
";
echo $i & 2; // 輸出 2
echo "
";
echo $i & 4; // 輸出 0
echo "
";
echo $i & 8; // 輸出 8
輸出結果: 1, 3, 11, 1, 2, 0, 8
$ 符號代碼中 $i=i|1; 缺少 $ 會導致語法錯誤或誤按常量處理。正確寫法:$i = $i | 1; 或 $i |= 1;。
echo "$i":解析變量值,輸出 1echo '$i':按字面量輸出字符串 $i$i |= 1 相當於 $i = $i | 1。二進制演示:
初始 $i = 0 (0000)
$i |= 1 → 0001 = 1
$i |= 2 → 0011 = 3
$i |= 8 → 1011 = 11
常用於權限掩碼、狀態標誌組合。
$i & 4 對應二進制 0100,因 $i=11 (1011) 第 3 位為 0,故結果為 0。此技巧常用於 if ($permission & READ) 判斷權限。
原文稱「$i & 4 為小於 0」,實際結果為 0(非負),非負數。位運算結果為無符號整數,不會產生負值。
define('READ', 1); define('WRITE', 2);$flags |= READ 設置權限,if ($flags & READ) 判斷權限=(賦值)與 |=(按位或賦值),避免邏輯錯誤位運算是高效標誌位管理的利器,但前提是變量引用正確、理解二進制位邏輯。本例展示了典型的「設置-檢測」模式,也是權限系統、狀態機的基礎實現方式。