比较运算符:操作数比较及特殊宇宙飞船操作符,示例代码解析
比较运算符会使用两个操作数,然后对它们进行比较,通常会把比较的结果以布尔值的形式返回,要么是 true,要么是 false。

有四种比较非常直观:
比较运算符
含义
小于
大于
>=
大于等于
有一种特殊的操作符,它被称为宇宙飞船。这种操作符会对两个操作数进行比较,然后返回的是一个整数,而非一个布尔值。
将a与b进行比较时,结果将是:
如果a小于b,则结果小于0,
如果a等于b,则结果为0。
如果a大于b,则结果大于0。
var_dump(2 < 3); // true
var_dump(3 < 3); // false
var_dump(3 = 3); // true
var_dump(3 > 3); // false
var_dump(1 2); // 输出一个小于 0 的整数类型数据。它表示对 1 和 2 进行某种操作后得到的结果为小于 0 的整数。
var_dump(1 1); // 0
输出 3 乘以 2 的结果;这是一个整数且大于 0。
执行上面示例代码,得到以下结果:
D:\>php test.php
bool(true)
bool(false)
bool(true)
bool(false)
bool(false)
bool(true)
bool(false)
int(-1)
int(0)
int(1)
有比较运算符可用于评估两个表达式是否相等,不过要留意类型的自动转换。
==运算符会在进行类型自动转换之后去计算两个表达式。它会尝试把两个表达式都转换成相同的类型,接着再进行比较。
相反,运算符“===(相同)”会计算两个不存在类型自动转换的表达式。所以,即便这两个表达式看起来相同,但若它们的类型不同,那么比较的结果将是 false。
这同样适用于!=或(不等于)和!==(不完全相同):
示例代码
$a = 3;
$b = '3';
$c = 5;
var_dump($a == $b); // true
var_dump($a === $b); // false
var_dump($a != $b); // false
var_dump($a !== $b); // true
var_dump($a == $c); // false
var_dump($a $c); // true
执行上面示例代码,得到以下结果:
D:\>php test.php
bool(true)
bool(false)
bool(false)
bool(true)
bool(false)
bool(true)
当测试字符串与表示相同数字的整数比较是否相等时,计算结果为 true 。这是因为 PHP 会先将两者转换为相同的类型。
当对它们是否相同进行测试时,由于它们属于不同类型,因此计算得出的结果是 false。