首頁  >  文章  >  後端開發  >  PHP的相等性(==雙等號)和恆等性(===三等號)比較運算子有何不同?

PHP的相等性(==雙等號)和恆等性(===三等號)比較運算子有何不同?

WBOY
WBOY轉載
2023-09-07 17:45:081434瀏覽

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,並且「Equal」回顯為輸出。

結論

在 PHP 中,雙等於 (==) 和三等於 (===) 運算子的比較行為有所不同。雙等於透過類型強制執行鬆散的相等檢查,嘗試在比較之前將值轉換為通用類型。相反,三重等於在不進行類型強制的情況下進行嚴格的相等檢查,同時考慮值和類型。三等號通常因其可靠性和可預測性而受到青睞。它有助於防止由無意的類型轉換引起的意外行為。了解這些差異使開發人員能夠根據所需的比較要求選擇適當的運算子並保留程式碼準確性。

以上是PHP的相等性(==雙等號)和恆等性(===三等號)比較運算子有何不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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