2011-09-19 53 views
0

如果您運行此代碼:PHP - 我得到真(0 =='undefined'),爲什麼?

if (0=='undefined') echo 'true'; else echo 'false'; 

你得到「真」,這意味着INT 0等於字符串「未定義」。

這是爲什麼?我在這裏錯過了什麼?

+2

又一個「簡單代表」的問題。 Stackoverflow的醜陋界面使得編寫另一個答案變得更加容易,而不是找到已經被要求鏈接的數十億。而Stackoverflow醜陋的代表系統使得寫出新的新答案更令人滿意,而不僅僅是將問題作爲確切的重複來完成。 –

回答

6

This table文檔當比較0"undefined"時,兩者都先轉換爲數字。而this section說,"undefined"轉換爲數字0

如果字符串以合法的數字數據開始,這將是使用的值 。否則,該值將爲0(零)。

因此,如果對PHP新手有些意外,預計可能會有比較結果。

如果您想要比較返回false,因爲兩個操作數的類型不同,PHP提供的identical operator===完全是這樣。

+0

+1 - 值得指出的是,只要字符串的值不包含任何可以轉換爲整數的值,並不重要。 –

+2

增加:你可以使用'==='實際考慮這些類型,但是你應該知道'0 ==='0''會返回false。 – Nanne

+0

@Pekka:我們可能在同一時間打字:) – Jon

相關問題