比較運算子(Comparison Operator)

比較運算子會將左右的值進行比較,最後回傳一個值,告知比較結果

範例 名稱 說明
$a == $b 相等 如果$a和$b的值相等則為TRUE
$a === $b 完全相等(全等) 如果$a和$b的值與型別都相等則為TRUE
$a != $b 不相等 如果$a和$b的值不相等則為TRUE
$a <> $b 不相等 如果$a和$b的值不相等則為TRUE
$a !== $b 不完全相等(不全等) 如果$a和$b的值或型別不相等則為TRUE
$a < $b 小於 如果$a小於$b則為TRUE
$a > $b 大於 如果$a大於$b則為TRUE
$a <= $b 小於等於 如果$a小於等於$b則為TRUE
$a >= $b 大於等於 如果$a大於等於$b則為TRUE
$a <=> $b 比較 如果$a<=$b則回傳-1,如果左右相等回傳0,如果$a=>$b則回傳1

$a <=> $b 是PHP 7新增的比較運算子

由於資料型別一共有8種,一次取2種做比較,所以全部有28種組合

而各種型別進行比較時,會根據以下的規則來做處理,情況重疊時以較上方的規則為準:

型別1 型別2 結果
數字形式字串 數字形式字串 轉為數字進行比較 。
字串 字串 以字串內容進行比較 。
字串 NULL NULL轉為空字串""進行比較 。
布林 任何型別 轉為布林進行比較,且FALSE < TRUE。
物件 物件 不同類別無法比較,相同類別在PHP4比較方式和陣列一樣,在PHP5中更為複雜,在之後的章節再做討論。
實作toString物件 任何型別 以toString()結果字串進行比較,與字串比較規則相同。
物件 字串 物件永遠比較大。
陣列 陣列 陣列必須有相同Key的元素才能比較,會逐值比較。
陣列 任何型別 陣列永遠比較大。
數字 任何型別 轉為數字進行比較。

讓我們用var_dump看一下比較的情況

<?php
    var_dump(0 == "a");       // bool(true), 轉為數字當作 0 和 0
    var_dump(0 === "a");      // bool(false) 型別不同
    var_dump(0 === "0");      // bool(false) 型別不同
    var_dump("1" != "01");    // bool(false), 轉為數字當作 1 和 1
    var_dump("10" <> "1e1");  // bool(false), 轉為數字當作 10 和 10
    var_dump(100 != "1e2");   // bool(false), 轉為數字當作 100 和 100
    var_dump(100 !== "1e2");  // bool(true), 型別不同
?>

results matching ""

    No results matching ""