首頁 >後端開發 >PHP問題 >為什麼 === 的速度比 == 快?

為什麼 === 的速度比 == 快?

Guanhui
Guanhui轉載
2020-06-18 18:01:322928瀏覽

為什麼 === 的速度比 == 快?

比較運算子 == (相等運算子) 與 === (恆等運算子) 來比較兩個值。他們也被稱為 寬鬆等於 (==) 和 嚴格等於 (===) 運算子。

符號 名稱 範例 輸出結果
== 等於 $a == $b #忽略類型,如果$a 等於$b 則為TRUE
=== 恆等於 $a === $b 如果$a 等於$b,且類型相同則為TRUE

PHP 運算子 PHP中有很多運算符, 但== 和=== 運算子嚴格或隨意執行類似的任務。

  • 如果兩個值的型別不同,那麼 == 和 === 會得到 不同的結果。運算速度也會有所不同, 因為 == 會先進行型別轉換,然後再比較。
  • 如果兩個值型別相同,那麼 == 和 === 會得到 相同的結果。運算速度也幾乎相同,兩個運算子都不會進行型別轉換。

相等運算== 比較兩個值時會暫時轉換資料類型,而=== (全等運算子)不需要執行任何型別轉換,因此計算量減少,速度也更快。

案例1:

<?php 

// 0 == 0 ->  类型相同返回 true
// 转换完成,然后
// 检查是否相等
var_dump(0 == "a"); 

// 1 == 1 -> true 
var_dump("1" == "01"); 

// 10 == 10 -> true 
var_dump("10" == "1e1"); 

// 100 == 100 -> true 
var_dump(100 == "1e2"); 

// 0 === "a" -> 这种情况为 false
// 转换不仅完成
// 还检查是否存在
// 是否相等
var_dump(0 === "a"); 

// "1" === "01" -> false 
var_dump("1" === "01"); 

// "10" === "1e1" -> false 
var_dump("10" === "1e1"); 

// 100 == "1e2" -> false 
var_dump(100 === "1e2"); 

switch ("a") { 
case 0: 
    echo "In first case"; 
    break; 

// 永远不会匹配 "a" 选项
// 因为 switch 使用的是 == 
case "a": 
    echo "In sceond case"; 
    break; 
} 
?>

輸出:

bool(true)
bool(true)
bool(true)
bool(true)
bool(false)
bool(false)
bool(false)
bool(false)
In first case

#案例2:

<?php 

// TRUE - 以下表达式等同于 (bool)1 == TRUE 
var_dump(1 == TRUE); 

// TRUE - 以下表达式等同于 (bool)0 == FALSE 
var_dump(0 == FALSE); 

// FALSE - 1 不全等于 TRUE
// 1 是整形, TRUE 是布尔型 
var_dump(1 === TRUE); 

// FALSE - 0 不全等于 FALSE
// 0 是整形, FALSE 是布尔型
var_dump(0 === FALSE); 
?>

輸出:

#bool(true)
bool(true)
bool(false)
bool(false)

注意: === 運算子'類型比較相對安全', 僅當兩個值具有相同的類型和值時才會回傳TRUE, 使用== 時,值相等就會回傳TRUE。

推薦教學:《PHP教學

以上是為什麼 === 的速度比 == 快?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:learnku.com。如有侵權,請聯絡admin@php.cn刪除