PHP转换(整数)返回字符串

时间:2014-09-26 23:57:55

标签: php

这是最近开始发生的奇怪事情。

function someFunction() {
    return 0;
}
if (someFunction() == 0)
    runCode();
elseif (someFunction() == '0')
    runOtherCode();

在这种情况下,不会调用runCode(),而是调用runOtherCode()。出现这种情况的原因是什么?

编辑:在某些情况下使用===修复此错误。但是,此问题的另一个时间是从数据库返回整数结果时。由于某种原因,转换为字符串但在返回数据之前向数据添加(int)的整数修复了该错误。

1 个答案:

答案 0 :(得分:1)

您需要使用严格比较来防止类型强制。基本上是这样的:

if(someFunction() === 0) 
elseif(someFunction() === '0')

3个等号而不是2个调用严格的比较,是区分字符串和整数比较的唯一方法。

编辑: 这在其他情况下也很重要,所以要经常考虑它。