Tôi có đoạn mã sau:
$item['price'] = 0;
/* Code to get item information goes in here */
if($item['price'] == 'e') {
$item['price'] = -1;
}
Nó nhằm khởi tạo giá mặt hàng về 0 và sau đó lấy thông tin về nó. Nếu giá được thông báo là 'e', nó có nghĩa là trao đổi thay vì bán, được lưu trữ trong cơ sở dữ liệu dưới dạng số âm.
Cũng có khả năng để giá là 0, vì mặt hàng là một phần thưởng hoặc vì giá sẽ được đặt trong giây phút sau đó.
Tuy nhiên, bất cứ khi nào giá không được đặt, khiến nó có giá trị ban đầu là 0, if
vòng lặp được chỉ ra ở trên sẽ đánh giá là đúng và giá được đặt thành -1. Tức là, nó coi 0 bằng 'e'.
làm như thế nào để giải thích chuyện này?
Khi giá được cung cấp là 0 (sau khi khởi tạo), hành vi sẽ thất thường: đôi khi giá trị được đánh giá là đúng, đôi khi giá trị được đánh giá là sai. *
if((string)$item['price'] == 'e')
sửa chữa các hành vi kỳ quặc. Xem stackoverflow.com/a/48912540/1579327 để biết thêm chi tiết