Tôi đang so sánh hai chuỗi như vậy:Integer chuỗi so sánh đều bình đẳng (PHP lỗi?)
<?php
$Str1 = '111122223333444455556666';
$Str2 = '111122223333444455557777';
if($Str1 != $Str2){
// Do something
} else {
// Do something else
}
?>
Rõ ràng, $ str1 là không giống như $ str2, nhưng vẫn luôn thực thi khác khối. Tôi biết rằng tôi chỉ nên sử dụng ===
hoặc !==
để so sánh ở đây, nhưng tôi tự hỏi tại sao (về cơ bản) bất kỳ giá trị nào khác mà tôi thử thực tế đánh giá cách nó được mong đợi.
Tôi cũng đọc điều này trong tài liệu "Nếu chuỗi không chứa bất kỳ ký tự '.', 'E' hoặc 'E' và giá trị số phù hợp với giới hạn kiểu số nguyên (như được định nghĩa bởi PHP_INT_MAX), chuỗi sẽ được đánh giá dưới dạng số nguyên. ", vì vậy tôi đoán nó không nên dưới đây hoặc giống như giá trị của PHP_INT_MAX (ít hơn so với chuỗi tôi đang đánh giá ở trên) - giả sử đó là ý nghĩa của chúng bởi "phù hợp với". Vậy tại sao các chuỗi trên được đánh giá là giống nhau? Có thể nó có thể là một lỗi PHP hoặc có cái gì đó tôi đang thiếu?
Tôi đang sử dụng phiên bản PHP 5.3.8 kể từ hôm qua, đến từ PHP 5.3.6. Chạy trên Windows XP.
Tôi không thể tạo lại cài đặt này trên bản cài đặt 5.3.5 của mình. Các chuỗi so sánh là "không bằng nhau" và "không phải không bằng nhau". –
Tôi đã tạo lại điều này trên PHP 5.2.5 (http://codepad.org/BJZT1KM1) và PHP 5.3.9-dev (http://codepad.viper-7.com/MxwYQw). –