萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 網路程式設計 >> PHP 程式設計

PHP isset()、is_null()、empty() 差異總整理:何時用哪個?

判斷變數「是否為空」是 PHP 最常見也最容易出錯的地方。本文透過實測對比表,釐清三個函式/語言結構的行為差異,並給出最佳實務建議。

實測對比表

輸入值isset()empty()is_null()布林判斷 !$val
"" (空字串)truetruefalsetrue
"0" (字串零)truetruefalsetrue
0 (整數零)truetruefalsetrue
nullfalsetruetruetrue
falsetruetruefalsetrue
array() (空陣列)truetruefalsetrue

核心差異總結

  • isset():語言結構,檢查變數是否「已宣告且非 null」。速度最快,不會觸發 Notice。
  • empty():語言結構,檢查變數是否為「空值」(含 0, "", null, false, 空陣列)。
  • is_null():函式,僅檢查值是否嚴格等於 null。可接受函式回傳值,但較慢且未宣告變數會觸發 Notice。

效能測試(一千萬次循環)

isset($a);      // 1.15 秒
is_null($a);    // 3.89 秒
$a === NULL;    // 1.22 秒(推薦替代 is_null)

最佳實務建議

  1. 檢查變數是否存在(含陣列鍵):用 isset()。
  2. 檢查值是否為 null:用 $var === NULL(語意清楚、速度快)。
  3. 檢查「空值」邏輯(0、false、空字串皆視為空):用 empty()。
  4. 避免 isset(NULL) 或 is_null(函式()) 等語法錯誤寫法。
copyright © 萬盛學電腦網 all rights reserved