PHP Spaceship 操作符怎么用?

文章导读
上一个 测验 下一个 飞船运算符是 PHP 7.0 版本引入的众多新特性之一。它是一个三向比较运算符。
📋 目录
  1. A 飞船运算符的语法
  2. B 示例 1
  3. C 示例 2
  4. D 示例 3
  5. E 示例 4
  6. F 示例 5
  7. G 与 Boolean 操作数的飞船运算符
A A

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