比较运算符采用两个操作数并比较它们,通常将比较结果作为布尔值返回,即true
或false
。
有四种比较非常直观:
比较运算符 | 含义 |
---|---|
< |
小于 |
<= |
小于等于 |
> |
大于 |
>= |
大于等于 |
有一种特殊的操作符<=>
(称为宇宙飞船)。它比较两个操作数并返回一个整数而不是一个布尔值。
将a
与b
进行比较时,结果将是:
- 如果
a
小于b
,则结果小于0
, - 如果
a
等于b
,则结果为0
。 - 如果
a
大于b
,则结果大于0
。
示例代码
<?php
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
。
这同样适用于!=
或<>
(不等于)和!==
(不完全相同):
示例代码
<?php
$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
。