Biểu thức so sánh trong php năm 2024
Khi làm việc với các framework PHP, chúng ta thấy xuất hiện các toán tử ?? và ?: được sử dụng rất thường xuyên. Bản thân mình trong quá trình làm việc hay bị nhầm lẫn khi sử dụng chúng. Để có thể sử dụng hiệu quả thì chúng ta hãy cùng tìm hiểu và phân biệt 2 toán tử này nhé 1. Toán tử Elvis ?:Trước phiên bản 5.3, PHP đã cung cấp cú pháp if else toán tử 3 ngôn ngắn gọn
Kể từ PHP 5.3+, chúng ta có thể sử dụng cú pháp toán tử ternary ngắn hơn bằng cách bỏ phần giữa của toán tử ternary
Để hiểu rõ cách hoạt động thì chúng ta hãy xem cách viết đầy đủ của toán tử này
Cú pháp này dịch ra văn nói sẽ là "nếu điều kiện expr1 là True thì sẽ return expr1, nếu không thì return expr2". Biểu thức bên phải của toán tử Elvis tức toán hạng thứ 2 sẽ chỉ được thực thi nếu toán hạng thứ nhất được đánh giá là False. Chúng ta cần phải ghi nhớ thế nào được coi là False trong PHP:
Chúng ta có thể sử dụng cùng lúc nhiều toán tử Elvis và nó sẽ trả về giá trị TRUE đầu tiên mà nó gặp phải
Nếu chỉ dùng if else thì nó sẽ dài dằng dặc như này
Với các ngôn ngữ khác: Trong một số ngôn ngữ lập trình khác như Perl, Python, Ruby và JavaScript, toán tử elvis được viết dưới dạng toán tử OR (ký hiệu ||). Điều này có hành vi tương tự, tức là trả về toán hạng đầu tiên của nó nếu nó được đánh giá là TRUE hoặc đánh giá và trả về toán hạng thứ hai của nó theo cách khác. 2. Toán tử hợp nhất NULL ??Từ PHP 7, toán tử hợp nhất NULL được giới thiệu và có cú pháp như sau
Nó có nghĩa là expr1 được trả về nếu expr1 tồn tại và không NULL, mặt khác biểu thức sẽ trả về expr2. Nếu không sử dụng cú pháp
4 thì biểu thức trên sẽ được biểu diễn như này
Lưu ý: Toán tử này chỉ quan tâm 2 điều biến có tồn tại và không NULL còn lại nếu biến được gán boolean FALSE thì cũng được coi là TRUE. Tương tự với toán tử Elvis, ta có thể sử dụng nhiều ?? cùng lúc
Trong trường hợp không có giá trị được xác định trong chuỗi liên kết, thông báo "Notice: Undefined variable: ..." được hiển thị. 3. So sánh ?: vs ??Chúng ta sẽ làm 1 bảng so sánh 2 toán tử này với 1 biểu thức đã cho để thấy rõ sự khác biệt của chúng |