本篇重點
- and 和 &&之間有什麼差別,它們分別代表什麼意思?
- or 和 || 之間有什麼差別,它們分別代表什麼意思?
- 邏輯運算子的執行順序
- 邏輯運算子使用建議
「分數有及格嗎?」、「考卷的姓名和學號都是正確的嗎?」、「這張考卷是 john 還是tom 的?」,在日常生活中很常用到的條件判斷,在程式中也很常出現,PHP 提供了很多符號來輔助我們,使用邏輯運算子來達到目的。
&&、AND vs || 、OR
- &&、AND 是「且、和」的意思,符號兩邊的條件都達成,結果為 true,反之為 false
- ||、OR 是「或」的意思,符號兩邊依左至右判斷,如果有條件達成,結果為 true,反之為 false
範例
依學生的資訊做條件處理
php1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| <?php
$name = 'john'; $score = 60; $gender = 'male';
if ($name == 'john' && $score >= 60) { echo '判斷為true,學生是 john,且分數是及格'; } else { echo '判斷為false'; }
if ($name != 'john' AND $gender == 'male') { echo '判斷為true,學生不是john,且性別是男生'; } else { echo '判斷為false'; }
if ($name == 'john' || $gender == 'female') { echo '判斷為true,學生是john,或是學生是女生'; } else { echo '判斷為false'; }
if ($score < 60 OR $gender != 'male') { echo '判斷為true,學生分數不及格或是這位學生不是男生'; } else { echo '判斷為false'; }
|
&& vs AND 以及 || vs OR
接著來比較 and 和 && 之間以及 or 和 || 之間的差異
簡單來說它們的差異就是執行的優先順序(Operator Precedence)不同
- 「&&」的執行順序比「=」高,而「=」的執行順序比「AND」高
- 「||」的執行順序比「=」高,而「=」的執行順序比「OR」高
範例
依學生的資訊做條件處理
php1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| <?php
$student_id = 123; $name = 'tom'; $gender = 'male'; $score = 49;
$answer = $student_id == 123 && $score >= 60;
$answer = $student_id == 123 AND $score >= 60;
$answer = ($student_id == 123 AND $score >= 60);
$answer = $name == 'john' || $name == 'tom';
$answer = $name == 'john' OR $name == 'tom';
$answer = ($name == 'john' OR $name == 'tom');
|
判斷式建議使用 &&
和 ||
,如果要使用 AND
和 OR
記得加上括號減少錯誤發生~
詳細的執行順序看這裡!
結論
條件判斷時,依需求使用不同的邏輯運算子幫助我們達到目的。
- 「&&」、「AND」 是「且」的意思,符號兩邊的條件皆須達成時使用
- 「||」、「OR」 是「或」的意思,符號兩邊的條件只需要有一個條件達成時使用
- 「&&」的執行順序比「=」高,而「=」的執行順序比「AND」高
- 「||」的執行順序比「=」高,而「=」的執行順序比「OR」高
運算子的執行優先順序大大的影響判斷的結果,所以在使用時要多加注意,不然會得到意想不到的結果😆,建議使用「&&」和「||」可以減少錯誤的發生~
延伸閱讀