- Không có sự khác biệt (kỹ thuật) - theo kiến thức của tôi cũng không có.
- Trong PHP, không sử dụng một trong hai.
Tôi khuyên bạn luôn luôn sử dụng các toán tử so sánh nghiêm ngặt ===
và !==
nếu có thể. Bạn sẽ biết khi nào bạn thực sự cần các toán tử so sánh lỏng lẻo.
Hiểu lầm
Tôi tin rằng bạn có thể nhầm lẫn về một vài điều:
- khai thác ngắn mạch
- thứ tự đánh giá
- ưu tiên điều hành
Tôi chỉ thấy rằng hướng dẫn PHP nói: "PHP kiểm tra từng điều kiện theo thứ tự từ trái sang phải"
Không,
- PHP thủ nào không nói rằng, đó là một nhận xét.
- PHP không làm điều đó.
PHP đánh giá các điều kiện từ trái sang phải, nhưng nó dừng lại khi biết kết quả:
expr1 && expr2
Nếu expr1
đánh giá false
, expr2
sẽ không được đánh giá. Điều này được gọi là ngắn mạch và dường như nó không được ghi chép rõ ràng - tôi không thể tìm thấy bất kỳ lưu ý chính thức nào khác về vấn đề này ngoại trừ nhận xét trong Ví dụ # 1. Đó là một tính năng nổi tiếng , mặc dù.
Ngụy biện
Tôi đã quen với Java và do đó luôn nghĩ rằng các điều kiện được diễn giải từ trái sang phải, tức là có một sự khác biệt quan trọng trong null! = $ Obj và $ obj! = Null
PHP kiểm tra từng điều kiện theo thứ tự từ trái sang phải
Ergo: Có thể áp dụng "cách thực hành tốt nhất" tương tự
Ergo: không có gì - không sequitur. Kết luận không theo từ tiền đề. Sử dụng constant == $variable
hoặc $variable == constant
không được kết nối với một trong hai ngắn mạch , thứ tự đánh giá hoặc ưu tiên vận hành .
Hành vi không xác định
Cả hai toán hạng của !=
được luôn được đánh giá. Trong trường hợp của PHP, thứ tự đánh giá (không liên quan ở đây) thực sự không được chỉ định (như không có trong tài liệu).