Amazon Ads

2014年3月12日 星期三

【P筆記】PHP中 empty、isset,與 is_null 的用法

php.net的文件中,可以找到下列的一張表格,它說明了如何對一個變數做型別上的判斷等函數間的比較:

這裡到提到三個函數:empty()is_null()isset()

empty
  1. 判斷傳傳入的變數是否為空,若傳入的變數是空、0、FALSE的值,或該變數不存在,則此函數傳回 true。在PHP5.5以前的版本,empty() 只支援以變數傳入,如 empty(0) 不是一個合法的呼叫方式。
  2. 下列的值會被視為是空的:""0"0"NULLFALSEarray()$var (一個被宣告的變數,但沒有被指定值)。

is_null

判斷傳入的變數是否為NULL

isset

判斷一個變數是否己被設置 (set),而且不是 NULL,若使用 unset() 函數釋放 (unset) 一個變數之後,將該變數傳入 isset() 則會回傳 true。此函數可以接受多個參數,如:
isset($x, $y, $z);
當所有傳入的變數都有被設置時,此函式才會回傳 true。

現在擷取上列表格一些結果,以程式碼做些範例:
var_dump(empty($v0));    //若變數傳入 empty 前未宣告 ,empty 回傳:true

var_dump(is_null($v0));    //若變數傳入 is_null 前未宣告,
                           //is_null 會報「Undefined variable」的錯誤

var_dump(isset($v0));    //若變數傳入 isset 前未宣告 ,isset 回傳:false

$v1 = "";

var_dump(empty($v1));    //若變數值為 "",empty 回傳:true

var_dump(is_null($v1));    //若變數值為 "",is_null 回傳:false

var_dump(isset($v1));    //若變數值為 "",isset 回傳:true

$v2 = NULL;

var_dump(empty($v2));    //若變數值為 NULL,empty 回傳:true

var_dump(is_null($v2));    //若變數值為 NULL,is_null 回傳:true

var_dump(isset($v2));    //若變數值為 NULL,isset 回傳:false

$v3 = array(); //(空陣列)

var_dump(empty($v3));    //若變數值為 array() (空陣列),empty 回傳:true

var_dump(is_null($v3));  //若變數值為 array() (空陣列),is_null 回傳:false

var_dump(isset($v3));    //若變數值為 array() (空陣列),isset 回傳:true

$v4 = FALSE;

var_dump(empty($v4));    //若變數值為 FALSE,empty 回傳:true

var_dump(is_null($v4));    //若變數值為 FALSE,is_null 回傳:false

var_dump(isset($v4));    //若變數值為 FALSE,isset 回傳:true

$v5 = TRUE;

var_dump(empty($v5));    //若變數值為 TRUE,empty 回傳:false

var_dump(is_null($v5));    //若變數值為 TRUE,is_null 回傳:false

var_dump(isset($v5));    //若變數值為 TRUE,isset 回傳:true

$v6 = "FALSE";

var_dump(empty($v6));    //若變數值為 "FALSE"(字串),empty 回傳:false

var_dump(is_null($v6));    //若變數值為 "FALSE"(字串),is_null 回傳:false

var_dump(isset($v6));    //若變數值為 "FALSE"(字串),isset 回傳:true

$v7 = "TRUE";

var_dump(empty($v7));    //若變數值為 "TRUE"(字串),empty 回傳:false

var_dump(is_null($v7));    //若變數值為 "TRUE"(字串),is_null 回傳:false

var_dump(isset($v7));    //若變數值為 "TRUE"(字串),isset 回傳:true

$v8 = 0;

var_dump(empty($v8));    //若變數值為 0,empty 回傳:true

var_dump(is_null($v8));    //若變數值為 0,is_null 回傳:false

var_dump(isset($v8));    //若變數值為 0,isset 回傳:true

$v9 = "0";

var_dump(empty($v9));    //若變數值為"0"(字串),empty 回傳:true

var_dump(is_null($v9));    //若變數值為"0"(字串),is_null 回傳:false

var_dump(isset($v9));    //若變數值為 "0"(字串),isset 回傳:true