區分php的比較運算子 和

2021-06-26 03:54:24 字數 1149 閱讀 9781

在php中,定義了一組比較運算子,其中比較容易混淆的是==, !=, ===, !==這四個。在php規範中,比較運算子僅適用於數值或字串兩種型別的比較。由於php並不是一種從語法上嚴格型別檢查的程式語言,在比較的過程中,如果兩個比較物件的型別不同時,就會形成互相轉換,更明確的說,字串型別會被轉義為數值型別。所以使用==和!=進行字串比較就會非常危險。因為如果**控制不好的情況下,就會出現字串與數字比較的情況,尤其是與0比較的情況非常常見,這樣的情況下,會出現非常多意外的邏輯錯誤。

舉例說明:

例1:$test_string="01";

var_dump($test_string == 1);

會輸出: bool(true),原因是$test_string被型別轉換為int,值為1。

例2:$test_string="test";

var_dump($test_string == 1);

會輸出:bool(false),原因是$test_string被型別轉換為int,值為0。

例3:$test_string="test";

var_dump($test_string == 0);

會輸出:bool(true),這個是最常出現的錯誤,$test_string被轉換為0,進行值比較,與0一致。

對!=是同理的,是進行值的比較,在比較的時候會進行型別轉換。

為了避免這種情況,就需要使用===和!==,這種情況下,php會比較兩個物件是否是完全一致的,也就是說,不會進行型別轉換,是物件內容的直接比較。

例4:$test_string="test";

var_dump($test_string === 0);

會輸出:bool(false),因為從物件內容上,完全不同,與傳統的比較結果是一致的。

例5:$test_string="test";

var_dump($test_string === "test");

會輸出:bool(true),因為值的內容是完全一致的。

所以如果比較兩個字串是否值相同,或不同,建議使用===和!==,會更加安全。同樣也可以使用strcmp,也會比==與!=安全了很多。

典型的錯誤情況如:

等等。

php 比較運算子

摘自 例子名稱結果 a b 等於true,如果 a 等於 b。a b 全等true,如果 a 等於 b,並且它們的型別也相同。php 4 引進 a b 不等true,如果 a 不等於 b。a b 不等true,如果 a 不等於 b。a b 非全等true,如果 a 不等於 b,或者它們的型別不同。p...

PHP中的比較運算子

一般來說,有以下規則 如果比較乙個數字和字串或者比較涉及到數字內容的字串,則字串會被轉換為數值並且比較按照數值來進行。但當用 或 進行比較時則不進行型別轉換,因為此時型別和數值都要比對。例如 var dump 0 a 0 0 true var dump 1 01 1 1 true var dump ...

5 算術運算子和比較運算子

select product name,sale price,sale price 2 as sale price x2 from product 運算是以行為單位執行的 法則2 6 select子句中可以使用常數或者表示式 所有包含null的計算,結果肯定是null 通常情況下,類似5 0這樣除數...