判斷變數「是否為空」是 PHP 最常見也最容易出錯的地方。本文透過實測對比表,釐清三個函式/語言結構的行為差異,並給出最佳實務建議。
| 輸入值 | isset() | empty() | is_null() | 布林判斷 !$val |
|---|---|---|---|---|
| "" (空字串) | true | true | false | true |
| "0" (字串零) | true | true | false | true |
| 0 (整數零) | true | true | false | true |
| null | false | true | true | true |
| false | true | true | false | true |
| array() (空陣列) | true | true | false | true |
null。可接受函式回傳值,但較慢且未宣告變數會觸發 Notice。isset($a); // 1.15 秒
is_null($a); // 3.89 秒
$a === NULL; // 1.22 秒(推薦替代 is_null)
isset()。$var === NULL(語意清楚、速度快)。empty()。isset(NULL) 或 is_null(函式()) 等語法錯誤寫法。