我比较两个字符串,像这样:整数字符串比较是相等的(PHP错误?)
<?php
$Str1 = '111122223333444455556666';
$Str2 = '111122223333444455557777';
if($Str1 != $Str2){
// Do something
} else {
// Do something else
}
?>
显然,$ str1和不一样的$ STR2,但仍始终执行else区块。我知道我应该简单地使用===
或!==
来比较这里,但我想知道为什么(基本上)我尝试的任何其他值实际上评估它的预期方式。
我也在文档“如果字符串不包含任何字符'','e'或'E'并且数值符合整数类型限制(由PHP_INT_MAX定义)该字符串将被评估为一个整数“,所以我猜它不应该低于或等于PHP_INT_MAX的值(这远远小于我上面评估的字符串) - 假设这就是他们的意思通过“适合”。那么为什么上面的字符串被评估为相同?它可能是一个PHP的错误,或者有什么我失踪?
我使用的PHP版本5.3.8自昨天起,来自PHP 5.3.6。在Windows XP上运行。
我不能在我的5.3.5安装中重新创建它。字符串比较为“不等于”和“不不等于”。 –
我在PHP 5.2.5(http://codepad.org/BJZT1KM1)和PHP 5.3.9-dev(http://codepad.viper-7.com/MxwYQw)上重新创建了它。 –