首頁 > 後端開發 > php教程 > 解析PHP比較運算子與邏輯運算符

解析PHP比較運算子與邏輯運算符

怪我咯
發布: 2023-03-07 10:44:01
原創
1413 人瀏覽過

運算子是告訴編譯程式執行特定算術或邏輯運算的符號,通常與運算元一起構成一個表達式,我們經常看到它會參與數學運算或邏輯運算。 PHP也包涵了很多的運算符,這篇文章詳細解讀其中很重要的比較運算子。


解析PHP比較運算子與邏輯運算符


#比較運算子類型

如同它們名稱所暗示的,允許對兩個值進行比較。比較運算子有下列幾個:
1) $a > $b 大於:若$a 嚴格大於$b,則回傳TRUE
2) $a 小於:若$a 嚴格小於$b,則回傳TRUE
3) $a >= $b 大於等於:若$a 大於等於$b,則回傳TRUE
4) $a  小於等於:若$a 小於等於$b,則回傳TRUE
5) $a $b 不等於:若$a 不等於$b,則回傳TRUE
6) $a != $b 不等於:如果$a 不等於$b,則回傳TRUE(同上)
7) $a == $b  等於:如果$a等於$b,則回傳TRUE
8) $a === $b 全等於:如果$a等於$b,且它們的型別也相同,則回傳TRUE
9) $a !== $b 不全等於:如果$a 不等於$b,或它們的型別不同,則返回TRUE

其中,我們要重點區分“等於”和“全等於”,$a == $b只是對兩個變數的值進行了比較運算,而全等於要對運算符兩邊的表達式同時進行值的比較和資料型態的比較,只有兩邊的值都相等,運算結果才是「真」。結合“不全等”運算子舉例來說,$a = 2; var_dump($a!==2);這個表達式回傳值是“假”,因為2是等於2的。另外,$a = 2;是整數而var_dump($a!==2);裡的2也是整型,但運算子是不全等於"!=="所以結果是假,因為2是等於2的。反過來如果是這樣$a = 2; var_dump($a!=='2');運算結果就是「真」的,因為2不等於'2',後面的'2'是一個字串的'2 ',即不全等於不只是比較變數值,還要對變數的資料型別進行比較。

PHP中比較不同類型的結果

如果PHP比較運算子比較一個整數和字串,則字串會轉換為整數後比較。如果比較兩個數字字串,則會把它們當作整數比較,另外此規則也適用於 switch 語句。
例如:
var_dump(0 == "a"); // 回傳TRUE,"a"被轉換成0
var_dump("1" == "01"); // 回傳TRUE,當做整數處理

string或null和string的比較:將NULL 轉換為"",進行數字或字串的比較
bool或null間的比較:轉換為bool,FALSE object內建類別可以定義自己的比較,不同類別不能比較,相同類別則比較屬性
string,resource 或number間的比較:將字串和資源轉換成數字,按普通數學比較
array間的比較:具有較少成員的數組較小,如果運算數1 中的鍵不存在於運算數2 中則數組間無法比較,需要逐個值比較(見如下代碼)
array和任何其它類型比較:array 總是更大 
object和任何其它類型比較:object 總是更大


##數組比較程式碼:

######################################################## ##########
function standard_array_compare($op1, $op2) 
{ 
if (count($op1) < count($op2)) { //具有较少成员的数组较小
return -1; // $op1 < $op2 
} elseif (count($op1) > count($op2)) { 
return 1; // $op1 > $op2 
} 
foreach ($op1 as $key => $val) { 
if (!array_key_exists($key, $op2)) { 
return null; 
} else if ($val < $op2[$key]) { 
return -1; 
} elseif ($val > $op2[$key]) { 
return 1; 
} 
} 
return 0; // $op1 == $op2 
}
登入後複製


較運算子中的三元運算子:

表達式(expr1) ? (expr2) : (expr3) 當表達式expr1 的值為TRUE 時的值為expr2,當表達式expr1 的值為FALSE 時的值為expr3。

以上是解析PHP比較運算子與邏輯運算符的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板