2011-09-19 56 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

相关问题