運算符優(yōu)先級
題:foo()
和@foo()
的區(qū)別?
考點:
- 運算符中的錯誤控制符@的使用和作用;
- 所有PHP運算符的考點;
- 運算符的優(yōu)先級;
- 比較運算符;
- 遞增減運算符;
- 邏輯運算符;
運算符中的錯誤控制符@:
PHP中支持一個錯誤控制符@,當將其放置在一個PHP表達式之前,該表達式可能產生的任何錯誤信息都會被忽略掉;
運算符的優(yōu)先級: 參考手冊
常用的優(yōu)先級考點:
遞增減 > ! > 算數(shù)運算符 > 大小比較 > (不)相等比較 > 引用 > 位運算符(^) > 位運算符(|) > 邏輯與 > 邏輯或 > 三目運算 > 賦值 > and > xor > or
括號的使用可以增加代碼的可讀性,推薦使用!
比較運算符:
== 和 === 的區(qū)別:
- ===是恒等計算符 同時檢查表達式的值與類型
- ==是比較運算符號 不會檢查條件式的表達式的類型
注意: 等值判斷(false的七種情況):false的七種情況都是等值的(==);
遞增減運算符:
- 遞增減運算符不會影響布爾值;true++, true-- 都還是true;false++,false--都還是false;
- 遞減都
NULL
沒有效果;遞增NULL
會變成 1; - 遞增和遞減在前是先運算后賦值返回,如果在后就先賦值返回,后運算;
邏輯運算符:
- 短路作用:
- || 和 && 與 and 和 or 的優(yōu)先級不同;
示例:
//短路作用
$a = true || $b == 3; // $b 不會執(zhí)行;
$b = false && $a == 1; // $b 為false 此表達式不會執(zhí)行
//優(yōu)先級問題:
$a = false || true; // $a = true;
$b = false or true; // $b = false,整體是true;
解題方法:
重點記憶遞增減運算符的運算規(guī)則,邏輯運算符的短路效果;遇到邏輯運算符要多考慮優(yōu)先級的問題;
優(yōu)先級的問題放在邏輯運算符中測試的!
例題:寫出下列程序打印輸出的結果:
$a = 0;
$b = 0;
if($a = 3 > 0 || $b = 3 > 0){
$a++;
$b++;
echo $a; //$a = 1 (true);
echo $b; //$b = 1;
}