Vài thứ hơi lạ trong PHP
Mở đầu Dạo gần đây mình hay được tiếp xúc với mấy câu hỏi cơ bản lẫn xoắn não về PHP. Đúng thật là nếu không tìm hiểu kỹ thì khó mà có thể trả lời được. Và khi tìm hiểu rồi thì thấy PHP thật là... không biết dùng từ gì để miêu tả luôn =)) Theo các bạn thì "01e4" và "001e4" có bằng (==) nhau ...
Mở đầu
Dạo gần đây mình hay được tiếp xúc với mấy câu hỏi cơ bản lẫn xoắn não về PHP. Đúng thật là nếu không tìm hiểu kỹ thì khó mà có thể trả lời được. Và khi tìm hiểu rồi thì thấy PHP thật là... không biết dùng từ gì để miêu tả luôn =)) Theo các bạn thì "01e4" và "001e4" có bằng (==) nhau không?
"01e4" và "001e4"
Chúng ta bắt đầu với một cái gì đó đơn giản và không gây tranh cãi. Nếu bạn có hai chuỗi chứa một số ký tự khác nhau, tất nhiên là chúng không thể được coi là bằng nhau. Các số 0 ở đầu 2 chuỗi được tính vào chuỗi và nó vẫn được coi là quan trọng vì đây là string chứ không phải number. Và do đó "01a4" != "001a4" trả về true.
Vậy thì với "01e4" == "001e4" thì kết quả sẽ như thế nào? Người ta bảo, PHP không thích string, nó sẽ tìm kiếm bất kỳ lý do gì nó có thể tìm thấy để xử lý các giá trị của bạn như là những con số. Và nó đã tìm thấy lý do ở đây, 0, 1, 4, e nó coi là các ký tự trong hệ hexadecimal. Từ đây 2 string trên không còn là string nữa