PHP - 飞船运算符
飞船运算符是 PHP 7.0 版本引入的众多新特性之一。它是一个三向比较运算符。
传统的比较运算符(<、>、!=、== 等)返回 true 或 false(相当于 1 或 0)。另一方面,飞船运算符有三种可能的返回值:-1、0 或 1。此运算符可用于 integer、float、string、array、object 等。
飞船运算符的语法
飞船运算符使用的符号是 "<=>"。
$retval = operand1 <=> operand2
在这里,如果 operand1 小于 operand2,则 $retval 为 -1;如果两个操作数相等,则为 0;如果 operand1 大于 operand2,则为 1。
飞船运算符被实现为一个组合比较运算符。传统的比较运算符可以视为 <=> 的简写形式,下表显示了这一点 −
运算符 |
<=> 等价形式 |
|---|---|
$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 |
示例 1
以下示例展示了如何在 PHP 中使用飞船运算符。我们将 5 与 10/2 进行比较。由于两个值相等,结果将为 0 −
<?php $x = 5; $y = 10; $z = $x <=> $y/2; echo "$x <=> $y/2 = $z"; ?>
输出
它将产生以下输出 −
5 <=> 10/2 = 0
示例 2
现在我们将 $x 改为 4 并检查结果。由于 4 小于 10/2,飞船运算符将返回 -1 −
<?php $x = 4; $y = 10; $z = $x <=> $y/2; echo "$x <=> $y/2 = $z"; ?>
输出
它将产生以下输出 −
4 <=> 10/2 = -1
示例 3
现在让我们将 $y 改为 7 并再次检查结果。现在 7 大于 10/2,所以飞船运算符将返回 1 −
<?php $x = 7; $y = 10; $z = $x <=> $y/2; echo "$x <=> $y/2 = $z"; ?>
输出
它将产生以下结果 −
7 <=> 10/2 = 1
示例 4
飞船运算符与 strcmp() 方法类似,可用于 string。在这个程序中,我们将比较短语 "bat" 和 "ball"。由于在字母顺序中 "bat" 在 "ball" 之后,所以结果为 1。
<?php $x = "bat"; $y = "ball"; $z = $x <=> $y; echo "$x <=> $y = $z"; ?>
输出
它将生成以下结果 −
bat <=> ball = 1
示例 5
将 $y 改为 "baz" 并检查结果 −
<?php $x = "bat"; $y = "baz"; $z = $x <=> $y; echo "$x <=> $y = $z"; ?>
输出
它将产生以下输出 −
bat <=> baz = -1
与 Boolean 操作数的飞船运算符
飞船运算符也适用于 Boolean 操作数 −
true <=> false 返回 1 false <=> true 返回 -1 true <=> true 以及 false <=> false 返回 0