比較運算符的作用是通過對值進行比較,返回一個布爾型的結果(部分運算符除外)。
如果比較一個數字和一個字符串(或包含數字的字符串),會將該字符串先轉成數字后在進行比較,嚴格模式(===
、!==
)除外
// 定義變量
$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
最大。
記得不要比較浮點數,否則會有意想不到的問題