看懂 PHP 的空值檢查

讓咱們先有一些基礎知識:函數

  • isset($x) 語言結構。檢查變量是否賦值
  • empty($x) 函數。檢查值是否爲空
  • is_null($x) 函數。檢查值是否爲null
  • == 運算符。判斷值是否相等
  • === 運算符。判斷值和類型是否相等

只有 isset() 是必須傳入變量的,其餘都可傳入變量、常量或字面量。code

讓咱們先看一張取值表:經常使用判空表達式參照表源碼

經常使用判空表達式參照表

獲得如下結論:it

  • unsetnull 看起來是等價的,其餘任何值都是 set 的。
  • empty($x) 等價於 $x == null
  • is_null($x) 等價於 $x === null
  • false0""[] 在布爾運算時都被看作 false
  • \0 在布爾運算時居然被看作 true

那 is_null() 與 === null 有什麼區別呢?基礎

  1. 後者更快。運算符操做比函數操做開銷小,雖然在PHP源碼中它們作的事情是相似的。
  2. 事實上前者判斷的是:值是否屬於 null 類型;後者判斷的是:值是否等於 null 且屬於 null 類型。固然咱們不能忽略一個事實,null 類型只有 null 值。
相關文章
相關標籤/搜索