2013-04-29 68 views
0

我有點驚訝,爲什麼發生這種情況?!基本PHP變量

$test = "THE STRING"; 
if($test == 0) echo "WTF!?"; else echo "OK"; 

的輸出是:

WTF!? 

在上線,我們剛纔$測試可變字符串,爲什麼它等於由上面的例子基於!?

感謝

+4

這是因爲PHP是鬆散的類型,閱讀所有關於它在文檔http://www.php.net/manual/en/language.operators.comparison.php - 瞭解的好處和陷阱(以及如何避免他們) – 2013-04-29 09:11:31

+0

@decze:不是,雖然這兩個問題的答案可能是相同的。 – EricSchaefer 2013-04-29 09:12:11

+0

由於鬆散類型轉換,您的==正在嘗試將您的字符串與數字值0進行比較。爲了確保可以正確計算,它會嘗試將字符串轉換爲整數。由於它不是有效的數字值,因此將其轉換爲0. ===使其強制執行類型檢查。由於2個值不是相同的「類型」,它會自動返回false。 – Tom 2013-04-29 09:19:10

回答

0

您應該使用

=== 

這一點。 PHP使用這個進行嚴格比較。

if($test === 0) { 
    echo "WTF?" 
} else { 
    echo "OK!"; 
} 
0

試試這個:

if($test === 0){ 
    echo "WTF?" 
} else { 
    echo "OK!"; 
} 
0

使用此代碼,而不是(三重等號):

if($test === 0) echo "WTF!?"; else echo "OK"; 

閱讀Comparison Operators以獲取更多信息。