我比較兩個字符串,像這樣:整數字符串比較是相等的(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)上重新創建了它。 –