我刚刚调试了一个脚本,发现 if 语句没有按我预期的方式工作。
var_dump("6064365413078728979" == "6064365413078728452");
die();
上面的代码会产生以下结果:
bool(true)
使用 === 运算符,它可以按预期工作。有人知道为什么吗?
我在 x64 windows 机器上使用 PHP 版本 5.3.13 和 wamp 安装。
最佳答案
PHP 具有松散的类型比较行为,因此您的数字字符串在 ==
非严格比较之前被转换为整数类型,并且转换结果溢出。
这是尽可能使用 ===
的主要原因。
看看this page有关类型杂耍的更多详细信息。
关于php - 在 PHP 中用 == 比较不同的字符串返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14259162/