PHP 中的相等 (== 雙等號) 和恆等 (=== 三等號) 比較運算子有什麼區別?


在 PHP 中,雙等號 (==) 和三等號 (===) 是用於比較值是否相等的比較運算子。但是,它們在行為和比較過程中的嚴格程度上有所不同。

雙等號 (==)

雙等號運算子檢查兩個值是否相等,但如果兩個值的型別不同,它會執行型別強制轉換。這意味著 PHP 會嘗試在執行比較之前將值轉換為通用型別。以下是關於雙等號運算子的一些要點

  • 如果兩個值具有相同的型別,則其行為類似於三等號運算子(嚴格比較)。

  • 如果兩個值的型別不同,PHP 將嘗試將其轉換為通用型別。例如,如果您比較一個整數和一個字串,PHP 將嘗試將字串轉換為整數。

  • 數字字串在與整數或浮點數比較時會自動轉換為數字。

  • 布林值將作為整數進行比較(true 為 1,false 為 0)。

  • Null 被認為等於空字串、空陣列或零。

  • 陣列和物件不是透過其內容進行比較,而是透過其標識進行比較。

示例 1

<?php
$value1 = 5;
$value2 = "5";


if ($value1 == $value2) {
   echo "Equal";
} else {
   echo "Not Equal";
}
?>

輸出

Equal

解釋

雙等號運算子執行型別強制轉換,因此字串“5”被轉換為整數 5,比較返回 true。

示例 2

<?php
$value1 = 5;

$value2 = "5.0";

if ($value1 == $value2) {
   echo "Equal";
} else {
   echo "Not Equal";
}
?>

輸出

Equal

解釋

雙等號運算子執行型別強制轉換。字串“5.0”被轉換為浮點數 5.0,比較返回 true。

三等號 (===)

三等號運算子,也稱為恆等運算子,對兩個值執行嚴格比較。它在不執行任何型別強制轉換的情況下檢查值和型別是否相等。三等號運算子更嚴格,通常被認為更安全,因為它避免了意外或意外的型別轉換。以下是關於三等號運算子的一些要點

  • 僅當要比較的兩個值具有相同的型別和相同的值時,它才會返回 true。

  • 如果型別不同,或者一個值不能強制轉換為另一個值的型別,則運算子返回 false。

  • 它在比較之前不執行任何型別轉換或強制轉換。

  • 在比較型別完整性很重要的值時,它通常是首選。

示例 1

<?php
$value1 = 5;
$value2 = "5";

if ($value1 === $value2) {
   echo "Equal";
} 
else {
   echo "Not Equal";
}
?>

輸出

Not Equal

解釋

三等號運算子執行嚴格比較,同時考慮值和型別。由於$value1 是一個整數,而$value2 是一個字串,因此它們不被認為相等。

示例 2

<?php
$value1 = 10;
$value2 = 10;

if ($value1 === $value2) {
   echo "Equal";
} else {
   echo "Not Equal";
}
?>

輸出

Equal

解釋

由於$value1 和$value2 都是值為 10 的整數,因此使用 === 進行的嚴格比較返回 true,並且“相等”作為輸出回顯。

結論

在 PHP 中,雙等號 (==) 和三等號 (===) 運算子在比較行為上有所不同。雙等號執行寬鬆的相等性檢查並進行型別強制轉換,嘗試在比較之前將值轉換為通用型別。相反,三等號在不進行型別強制轉換的情況下進行嚴格的相等性檢查,同時考慮值和型別。三等號通常因其可靠性和可預測性而被首選。它有助於防止由意外型別轉換引起的意外行為。瞭解這些區別使開發人員能夠根據所需的比較要求選擇合適的運算子並維護程式碼的準確性。

更新於: 2023-07-28

303 次檢視

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.