使用==比较PHP中的不同字符串将返回true

Lub*_*bje 3 php string comparison string-comparison comparison-operators

我只是在调试脚本,发现if语句没有按照我的预期运行.

var_dump("6064365413078728979" == "6064365413078728452");
die();
Run Code Online (Sandbox Code Playgroud)

上面的代码将导致以下结果:

bool(true)
Run Code Online (Sandbox Code Playgroud)

使用===运算符,它按预期工作.有人有任何想法吗?

我在x64 windows机器上使用PHP版本5.3.13和wamp安装.

Áxe*_*ena 7

PHP具有松散的类型比较行为,因此在==非严格比较之前,您的数字字符串将转换为整数类型,并且转换结果会溢出.

这是在===可能的情况下使用的主要原因.

有关类型杂耍的更多详细信息,请查看此页面.