比较运算符的作用是通过对值进行比较,返回一个布尔型的结果(部分运算符除外)。
如果比较一个数字和一个字符串(或包含数字的字符串),会将该字符串先转成数字后在进行比较,严格模式(===
、!==
)除外
// 定义变量
$foo = 30;
$bar = "30";
// 是否等于 true
$foo == $bar;
// 是否绝对等于 false
$foo === $bar;
// 是否不等于 false
$foo != $bar;
$foo <> $bar;
// 是否绝对不等于 true
$foo !== $bar;
// 是否小于 false
$foo < $bar;
// 是否大于 false
$foo > $bar;
// 是否小于或等于 true
$foo <= $bar;
// 是否大于或等于 true
$foo >= $bar;
// 结合比较运算符
// 到底是小于(-1)等于(0)还是大于(1),此处返回 0
$foo <=> $bar;
// NULL 合并操作符
// 谁不为空? 严格判断NULL,哪怕是""也会认为不是NULL
$one = NULL;
$two = NULL;
$three = "four";
// four
$one ?? $two ?? $three;
字符串、数组、对象也能进行比较
不同类型之间的比较,可以参考下列规则
-
string|null <=> string
,先将NULL
转成''
-
bool|null <=> any
,先转成Boolean
,TRUE > FALSE
-
object <=> object
,限相同的类,如没定义规则就按数组的方式一样比较属性 -
string|resource|number <=> string|resource|number
,先转成数字,再按数学比较 -
array <=> array
,限键相同,成员少的小,依次比较属性 -
object <=> other
,object
最大 -
array <=> other
,除object
外,array
最大。
记得不要比较浮点数,否则会有意想不到的问题