程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php empty(), isset(), is_null()函數用法實例

php empty(), isset(), is_null()函數用法實例

編輯:關於PHP編程

在php中empty(), isset(), is_null()三個函數在很多朋友看來都差不多,但我們簡單想一下好像又不同,一個空值,一個是否是一個變量,是否為null,下面我來舉例來說明。  

很多人對於 PHP 的 empty(),isset() 及 is_null() 三個函數的用法比較模糊,網上的資料也很多,但未必能講的清楚,下面給出一個測試實例,對於理解這三個函數的區別會有很大的好處。

 

測試的類型如下:

 $a;
$b = false;
$c = '';
$d = 0;
$e = null;
$f = array();
?> 

 
empty()
 

 代碼如下 復制代碼

var_dump(empty($a));
var_dump(empty($b));
var_dump(empty($c));
var_dump(empty($d));
var_dump(empty($e));
var_dump(empty($f));
?>

// 輸出
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true) 

從代碼中可以看出,只要數據類型是否為空或假,empty()就輸出true。

  isset()
 

 代碼如下 復制代碼

var_dump(isset($a));
var_dump(isset($b));
var_dump(isset($c));
var_dump(isset($d));
var_dump(isset($e));
var_dump(isset($f));
?>

// 輸出
bool(false)
bool(true)
bool(true)
bool(true)
bool(false)
bool(true) 

可以看出isset()只能用來判斷是否為NULL和未定義。

 
警告: isset() 只能用於變量,因為傳遞任何其它參數都將造成解析錯誤。若想檢測常量是否已設置,可使用 defined()函數。
當要 判斷一個變量是否已經聲明的時候 可以使用 isset 函數
當要 判斷一個變量是否已經賦予數據且不為空 可以用 empty 函數
當要 判斷 一個變量 存在且不為空 先isset 函數 再用 empty 函數

比如檢測 $id 變量,當 $id=0 時,用empty() 和 isset() 來檢測變量 $id 是否已經配置,兩都將返回不同的值—— empty() 認為沒有配置,isset() 能夠取得 $id 的值:

 代碼如下 復制代碼

$id=0;
    empty($id)?print "It's empty .":print "It's $id .";
      //結果:It's empty .
    print "
";
    !isset($id)?print "It's empty .":print "It's $id .";
      //結果:It's 0 .


這意味著,我們在使用變量處理函數時,當該變量可能出現0的值,使用 empty() 要小心,這個時候用 isset 取代它更明智一些。

當一個php頁面的 URL 尾部參數出現 id=0 時(比如:test.php?id=0),試比較:

 代碼如下 復制代碼


if(empty($id)) $id=1; - 若 id=0 ,id 也會為1
if(!isset($id)) $id=1; - 若 id=0 ,id 不會為1


可分開運行以下代碼檢測上述推斷:

 代碼如下 復制代碼


 if(empty($id)) $id=1;
    print $id; // 得到 1

    if(!isset($id)) $id=1;
print $id; //得到 0

 

is_null()
 

 代碼如下 復制代碼

var_dump(is_null($a));
var_dump(is_null($b));
var_dump(is_null($c));
var_dump(is_null($d));
var_dump(is_null($e));
var_dump(is_null($f));
?>

// 輸出
bool(true)
bool(false)
bool(false)
bool(false)
bool(true)
bool(false) 

is_null 字面意思了。

 由此可見 empty() 可以用來判定所有的數據類型是否為空或假,而 is_null 與 isset 基本一樣,只能用來判斷是否為NULL和未定義。

後來給大家附一張表

下面一張表可以很清楚的說明他們之間的關系:

變量                             empty          is_null          isset
$a=””                          true               false              true
$a=null                      true               true              false
var $a                         true              true               false
$a=array()               true               false              true
$a=false                    true               false              true
$a=15                        false              false               true
$a=1                           false              false               true
$a=0                          true               false               true
$a=”0”                      true               false                true
$a=”true”                false               false              true
$a=”false”               false               false               true


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved