我有點驚訝,爲什麼發生這種情況?!基本PHP變量
$test = "THE STRING";
if($test == 0) echo "WTF!?"; else echo "OK";
的輸出是:
WTF!?
在上線,我們剛纔$測試可變字符串,爲什麼它等於由上面的例子基於!?
感謝
我有點驚訝,爲什麼發生這種情況?!基本PHP變量
$test = "THE STRING";
if($test == 0) echo "WTF!?"; else echo "OK";
的輸出是:
WTF!?
在上線,我們剛纔$測試可變字符串,爲什麼它等於由上面的例子基於!?
感謝
您應該使用
===
這一點。 PHP使用這個進行嚴格比較。
if($test === 0) {
echo "WTF?"
} else {
echo "OK!";
}
試試這個:
if($test === 0){
echo "WTF?"
} else {
echo "OK!";
}
這是因爲PHP是鬆散的類型,閱讀所有關於它在文檔http://www.php.net/manual/en/language.operators.comparison.php - 瞭解的好處和陷阱(以及如何避免他們) – 2013-04-29 09:11:31
@decze:不是,雖然這兩個問題的答案可能是相同的。 – EricSchaefer 2013-04-29 09:12:11
由於鬆散類型轉換,您的==正在嘗試將您的字符串與數字值0進行比較。爲了確保可以正確計算,它會嘗試將字符串轉換爲整數。由於它不是有效的數字值,因此將其轉換爲0. ===使其強制執行類型檢查。由於2個值不是相同的「類型」,它會自動返回false。 – Tom 2013-04-29 09:19:10