比较运算符采用两个操作数并比较它们,通常将比较结果作为布尔值返回,即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(4 <= 3); // false
var_dump(2 > 3); // false
var_dump(3 >= 3); // true
var_dump(3 > 3); // false
var_dump(1 <=> 2); // int less than 0
var_dump(1 <=> 1); // 0
var_dump(3 <=> 2); // int greater than 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。