TOÁN TỬ <=> LÀ GÌ? "PHI THUYỀN KHÔNG GIAN" HAY KẺ SO SÁNH TOÀN NĂNG?
Trong cộng đồng lập trình viên, ký hiệu <=> thường được gọi vui là Spaceship Operator (Toán tử phi thuyền) bởi vì hình dáng của nó trông giống hệt một chiếc phi thuyền không gian (hoặc một con tàu trong tựa game bắn máy bay cổ điển).
Tùy vào môi trường code, nó được chia thành hai cách sử dụng chính:
1. Trong SQL (MySQL / MariaDB): Toán Tử So Sánh "Bất Chấp Null"
Khi viết câu lệnh truy vấn cơ bản trong SQL, nếu so sánh bằng (=) với một giá trị NULL, kết quả trả về thường sẽ gây ra bực mình (vì NULL = NULL trong SQL trả về kết quả... không xác định).
Toán tử <=> trong SQL được gọi là Null-Safe Equal (So sánh an toàn với NULL).
Nó hoạt động như thế nào?
- Nếu hai vế có giá trị bằng nhau, trả về
1(True). - Nếu hai vế khác nhau, trả về
0(False). - Điểm đặc biệt: Nếu cả hai vế đều là
NULL, nó không trả về lỗi hay giá trị rỗng, mà trả về1(True). Ngược lại, một vếNULLvà một vế có giá trị thì trả về0(False).
Ứng dụng thực tế:
Rất hữu ích khi viết câu lệnh WHERE để so sánh các cột có khả năng chứa giá trị trống (NULL) mà không muốn bị mất dữ liệu do lỗi logic của phép so sánh truyền thống.
2. Trong PHP (Từ phiên bản 7.0 trở lên): Toán Tử So Sánh 3 Chiều
Trong hệ sinh thái PHP, <=> được chính thức đưa vào từ PHP 7, mang tên gọi chuẩn xác là Combined Comparison Operator (Toán tử so sánh kết hợp).
Thay vì phải viết một nùi câu lệnh điều kiện if...elseif...else chỉ để xem số nào lớn hơn, toán tử này sẽ so sánh hai biểu thức $a và $b rồi trả về một trong 3 giá trị số nguyên:
- Trả về
-1nếu$a < $b(vế trái nhỏ hơn vế phải). 0nếu$a == $b(hai vế bằng nhau).1nếu$a > $b(vế trái lớn hơn vế phải).
Ví dụ minh họa:
echo 5 <=> 10; // Kết quả: -1 (vì 5 nhỏ hơn 10)
echo 10 <=> 10; // Kết quả: 0 (vì bằng nhau)
echo 15 <=> 10; // Kết quả: 1 (vì 15 lớn hơn 10)
Sức mạnh thực sự trong hàm sắp xếp (Sorting):
Trước đây, khi dùng hàm usort() để tự định nghĩa cách sắp xếp mảng, lập trình viên phải viết kha khá dòng lệnh để kiểm tra lớn nhỏ. Từ khi có <=>, việc sắp xếp trở nên cực kỳ thanh thoát và ngắn gọn:
$numbers = [4, 2, 9, 1];
// Sắp xếp mảng tăng dần chỉ với 1 dòng code gọn gàng
usort($numbers, function($a, $b) {
return $a <=> $b;
});
💡 Lời Kết
Toán tử <=> (Spaceship Operator) tuy nhỏ gọn nhưng thể hiện tư duy tối ưu hóa cú pháp của các nhà thiết kế ngôn ngữ. Dù là dùng để "bảo vệ" dữ liệu NULL trong cơ sở dữ liệu MariaDB/MySQL hay để viết các thuật toán sắp xếp tinh gọn trong PHP, việc nắm vững toán tử này sẽ giúp code của bạn trở nên chuyên nghiệp và thông minh hơn rất nhiều.
All rights reserved