Toán tử Spaceship là một trong nhiều tính năng mới được giới thiệu trong PHP với phiên bản 7.0. Đây là một toán tử so sánh ba chiều.
Các toán tử so sánh thông thường (<, >, !=, ==, v.v.) trả về true hoặc false (tương đương với 1 hoặc 0). Mặt khác, toán tử tàu vũ trụ có ba giá trị trả về có thể: -1, 0 hoặc 1. Toán tử này có thể được sử dụng với số nguyên, số thực, chuỗi, mảng, đối tượng, v.v.
Ký hiệu được sử dụng cho toán tử tàu vũ trụ là "<=>" .
$retval = operand1 <=> operand2
Ở đây, $retval là -1 nếu operand1 nhỏ hơn operand2, 0 nếu cả hai toán hạng bằng nhau, và 1 nếu operand1 lớn hơn operand2.
Toán tử tàu vũ trụ được triển khai như một toán tử so sánh kết hợp. Các toán tử so sánh thông thường có thể được coi là những cách viết tắt cho <=> như bảng sau đây cho thấy −
Toán tử |
<=> tương đương |
---|---|
$a < $b | ($a <=> $b) === -1 |
$a <= $b | ($a <=> $b) === -1 || ($a <=> $b) === 0 |
$a == $b | ($a <=> $b) === 0 |
$a != $b | ($a <=> $b) !== 0 |
$a >= $b | ($a <=> $b) === 1 || ($a <=> $b) === 0 |
$a > $b | ($a <=> $b) === 1 |
Ví dụ dưới đây cho thấy cách bạn có thể sử dụng toán tử spaceship trong PHP −
<?php $x = 5; $y = 10; $z = $x <=> $y/2; echo "$x <=> $y/2 = $z"; ?>
Nó sẽ tạo ra output −
5 <=> 10/2 = 0
Thay đổi $x=4 và kiểm tra kết quả −
<?php $x = 4; $y = 10; $z = $x <=> $y/2; echo "$x <=> $y/2 = $z"; ?>
Nó sẽ tạo ra output −
4 <=> 10/2 = -1
Thay đổi $y=7 và kiểm tra lại kết quả.
<?php $x = 7; $y = 10; $z = $x <=> $y/2; echo "$x <=> $y/2 = $z"; ?>
Nó sẽ tạo ra output −
7 <=> 10/2 = 1
Khi được sử dụng với các toán hạng chuỗi, toán tử spaceship hoạt động giống như hàm strcmp().
<?php $x = "bat"; $y = "ball"; $z = $x <=> $y; echo "$x <=> $y = $z"; ?>
Nó sẽ tạo ra output −
bat <=> ball = 1
Thay đổi $y = "baz" và kiểm tra kết quả −
<?php $x = "bat"; $y = "baz"; $z = $x <=> $y; echo "$x <=> $y = $z"; ?>
Nó sẽ tạo ra output −
bat <=> baz = -1
Toán tử tàu vũ trụ cũng hoạt động với các toán hạng Boolean −
true <=> false returns 1 false <=> true returns -1 true <=> true as well as false <=> false returns 0